shell脚本

shell for循环

柔情痞子 提交于 2020-02-14 08:05:53
seq的效果 # seq 1 5 1 2 3 4 5 第一个for脚本 #!/bin/bash # for 操作 for i in `seq 1 5` do echo "num is $i" done 计算1到100的和。 # expr 1 + 100 101 #!/bin/bash # 计算1到100的和 j=0 for i in `seq 1 100` do j=`expr $i + $j` done echo -e "\033[32m 1到100的和为:$j \033[0m"; #!/bin/bash # 计算1到100的和 j=0 for i in {1..100} do j=`expr $i + $j` done echo -e "\033[32m 1到100的和为:$j \033[0m"; #!/bin/bash # 计算1到100的和 j=0 for((i=1;i<=100;i++)) do j=`expr $i + $j` done echo -e "\033[32m 1到100的和为:$j \033[0m"; -x可以查看执行过程。 /bin/bash -x for.sh + BEGIN=1 + END=10 + j=0 + (( i=1 )) + (( i<=10 )) ++ expr 1 + 0 + j=1 + (( i++ )) + (( i<=10 ))

【Shell】Shell脚本实例二

只愿长相守 提交于 2020-02-14 02:20:29
Shell脚本实例二 1. 通过shell脚本封请求数异常的IP 2. 备份MySQL数据库 3. 通过shell脚本+expect批量发布代码到多台web服务器 4. 定时执行Linux shell脚本实现SFTP定时上传下载文件 5. 检测网卡流量 1.通过shell脚本封请求数异常的IP 需求: 1. 通过分析访问日志,将 1 分钟内请求超过 100 次的IP封掉 2. 每半小时将不再请求或请求量很小的IP解封 3. 访问日志路径 / data / logs / access . log 访问日志示例: 192.168 .234 .1 - - [ 22 / Oct / 2019 : 20 : 34 : 07 + 0800 ] "GET / HTTP/1.1" 200 53570 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" "-" 192.168 .234 .1 - - [ 22 / Oct / 2019 : 20 : 34 : 07 + 0800 ] "GET /wp-includes/css/dist/block-library/style.min.css?ver=5.2.3

shell for循环

痞子三分冷 提交于 2020-02-13 00:04:14
1. for语句的定义 var foo = 'bar' ; 1 2 2. for语句的格式 for NUM in 1 2 3 for NUM in { 1. .3 } for NUM in `seq 1 3` 或者 for NUM in `seq 1 2 10` do done 1 2 3 4 5 3. for语句示例 vim for . sh #编辑 for 示例脚本文件 # ! / bin / bash for i(变量名) in { 1. .10 } (变量的范围) do echo $i(输出变量i的所有值) done sh for . sh #运行脚本 1 2 3 4 5 6 7 8 9 vim for . sh # ! / bin / bash a = 1 b = 10 for i in { $a . . $b } do echo $i done 1 2 3 4 5 6 7 8 9 可以看到,这种定义变量的方式是不对的 vim for . sh # ! / bin / bash a = 1 b = 10 for i in `seq $a $b` do echo $i done sh for . sh 1 2 3 4 5 6 7 8 9 10 11 运行脚本,可以看到, vim for . sh # ! / bin / bash a = 1 b = 10 for i in

shell脚本练习

蓝咒 提交于 2020-02-12 20:56:27
1,添加10个用户user1-user10,密码为8位随机字符 #cat /dev/urandom | head -c 5 | md5sum | head -c 5 #利用 cat /dev/urandom 可以查看二进制数据流,然后用head -c 8取前八位,不过这里的字符是二进制数据流,需用md5sum转换成md5内容,然后再取md5的8位随机数 或者 #cat /dev/urandom |tr -dc 'a-zA-Z0-9'|head -c 8 tr -dc :字符集补集,从输入文本中将不在补集中的所有字符删除; 例: echo aa.,a 1 b #$bb 2 c*/cc 3 ddd 4 | tr -d -c '0-9 \n' 1 2 3 4 这里tr -dc 'a-zA-Z0-9’删除的是输入文本中,不是字母跟数字的部分,补集不带字符。如果需要设置更复杂的密码,可以使用tr可以使用的字符类: [:alnum:]:字母和数字 [:alpha:]:字母 [:cntrl:]:控制(非打印)字符 [:digit:]:数字 [:graph:]:图形字符 [:lower:]:小写字母 [:print:]:可打印字符 [:punct:]:标点符号 [:space:]:空白字符 [:upper:]:大写字母 [:xdigit:]:十六进制字符 例: cat /dev/urandom |

Shell脚本exit用法与区别

筅森魡賤 提交于 2020-02-12 19:48:11
在Shell脚本中,往往会遇到一些判断类型为某个值不符合预期值的时候就退出 主脚本/当前脚本/当前函数 ,那么 Exit 与 return 的用法与区别是什么呢? 下面先使用Exit举个简单例子,脚本内容如下 #!/bin/bash if [[ "$1" == "1" ]];then echo '退出' exit 0 echo 'exit' fi echo 'END' 第一种执行方法:   使用bash解析器进行调用,结果如下 然后第二种执行方法:   此时可以看出同样的脚本,同样的解析器,不同的执行方法会得到不一样的结果 接下来是第三种方法: 此时,第三种执行方法效果与第一种一致 然后是第四种执行方法:    然后 得到的结果与第二张一致。 最后再使用不同的解析器调用看看 那么结果证明: 一,三,五的执行结果一致 二,四的执行结果一致 通过对比不同的执行方法与结果,我们可以得出一个结论:   当使用下面三种执行方法时: 此时的脚本内容会作为一条一条的指令直接应用到当前终端, 而使用解析器或者使用 ./ 的时候则是为shell脚本运行一个进程, 当遇到exit的时候应用的是这一个进程,反之则是应用到当前控制终端,也就是相当于在终端执行exit命令, 此时会注销当前登陆终端的用户,如果当前终端是采用一个用户进行登陆的话就会断开连接, 如果是多层登陆的话则会回退到下一层的用户终端 来源

shell基础2

大憨熊 提交于 2020-02-12 19:06:13
五、shell变量和运算符 变量:   由字母、数字、下划线组成,但是不能以数字开头。   变量的默认类型都是字符串型,若要进行数值运算,则必须指定变量类型为数值型。一般用$(( ))。   变量用等号连接值,等号左右两侧不能有空格。   变量分类:     用户自定义变量: name="1111"     环境变量:一般大写     位置参数变量:这种变量主要是用来向脚本中传递参数或者属鸡的,变量名不能自定义,变量的作用是固定的。     预定义变量        (用户自定义变量和环境变量忽略不讲。)   1、位置参数变量:      $n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}     $* 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体     $@ 这个变量也代表命令行中所有的参数,$@把每个参数区分对待     $# 这个变量代表命令行中的所有参数的个数        2、 预定义变量:     $?  最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令不正确了。     $$  当前进程的id号     $!   后台运行的最后一个进程的进程号   3、read接收键盘输入:     read [选项] [变量名]   选项:

shell脚本监测进程并重启

家住魔仙堡 提交于 2020-02-12 12:04:52
本人实例: #!/bin/bash ps -ef | grep elastic | grep -v grep if [ $? -ne 0 ] then echo "start process......" echo 1 > /proc/sys/vm/drop_caches cd /data/soft/elasticsearch-6.4.0/bin/ su elsearch ./elasticsearch -d else echo "runing......" fi 这是检测搜索引擎 elastic 的脚本 #!/bin/bash ps -ef | grep mysqld | grep -v grep if [ $? -ne 0 ] then echo "start process......" /etc/rc.d/init.d/mysqld start else echo "runing......" fi 这是检测mysql 进程的 脚本 来源: https://www.cnblogs.com/wujf-myblog/p/12298364.html

expect使用技巧

无人久伴 提交于 2020-02-11 21:09:10
1) 获取命令行参数,例如通过./abc.exp a1 a2执行expect脚本 set 变量名1 [lindex $argv 0] 获取第1个参数a1 set 变量名2 [lindex $argv 1] 获取第2个参数a2 2)函数中使用外部变量 例如在函数外部定义了变量va: set va "", 现在现在某个函数中使用,需要通过全局范围限定符进行引用,即$::va,如果进行变量修改,可以使用 set ::va xxx 3) 在expect中执行shell语句 例如: exec sh -c { if [ -f "$HOME/.ssh/known_hosts" ] then >$HOME/.ssh/known_hosts fi } 4) 获取spawn id 例如: spawn ssh -l $::LAB_USER $IP set MY_SPAWN_ID $spawn_id 5) expect以及send指定spawn id 如果只是简单的一个spawn远端连接,随后进行expect/send语句,无需指定spawn id, 有时比较复杂,比如有多个spawn id,那么需要使用 -i 指明具体哪一个,例如: expect { -i $::MY_SPAWN_ID "/home/xxx:" { send -i $::MY_SPAWN_ID "YOUR SHELL CMD HERE

Linux 常用的一些操作

ぃ、小莉子 提交于 2020-02-11 19:51:20
1、查看linux中某个端口是否被占用 1> 使用lsof lsof -i:端口号 查看该端口是否被占用 2> 使用netstat netstat -antpu |grep 80 过滤端口80的使用状态 2、linux中源码包编译安装后,不受systemctrl控制,启动/关闭服务方式: 启动:/usr/local/nginx/sbin/nginx【没有报错提示,代表成功了】 关闭:/usr/local/nginx/sbin/nginx -s stop 报错:Address already in use 【把http关掉】 注意:同一个端口在使用过程中,不能同时被两个程序占用 3、正常yum安装的非源码包,受 systemctrl控制 ,可以 systemctrl控制启动/关闭 启动:systemctrl restart httpd 关闭:systemctrl stop httpd 启动:service start httpd 关闭:service stop httpd 4、Linux里面$#、 $0、$1、$2、$@、$*、$$、$?、$!、$_的含义 $#:传给脚本的变量总个数 $0:表示脚本本身的名字 $1:传给该shell脚本的第一个变量 $2:传给该shell脚本的第二个变量 $@:传给脚本的所有变量 $*:是以一个单字符串显示所有传递给脚本的变量,与位置变量不同

《网络攻防实践》寒假作业

≯℡__Kan透↙ 提交于 2020-02-11 18:31:13
目录 前言 作业一 作业二 基于VMWare安装虚拟机Ubuntu Linux命令 Linux基础入门 前言 这个作业属于那个课程 《网络攻防实践》 这个作业的要求在哪里 《网络攻防实践》假期作业 我在这个课程的目标是 学习并了解网络攻防的相关知识,能够进行独立的实际操作 这个作业在哪个具体方面帮助我实现目标 该作业主要帮助我学习markdown的相关用法以及Linux的常用命令,为学习网络攻防实践课做好准备 作业正文 作业一、作业二 参考文献 https://www.cnblogs.com/math/p/se-tools-001.html、https://www.cnblogs.com/math/p/exceltk.html、https://www.cnblogs.com/Pandaman/p/markdown.html 作业一 (1)你对网络攻击和防御了解多少?该课程需要计算机和网络相关的基础知识,你原专业是什么专业,目前你掌握多少基础知识? (2)作业要使用Markdown格式,Markdown入门参考(需掌握)。 我本科是软件工程专业,学习过《计算机网络》课程,了解一些网络相关的基本知识。但所学习知识尚浅,仍需努力学习相关知识。 攻击技术:网络扫描,网络监听,网络入侵,网络后门,网络隐身 防御技术:安全操作系统和操作系统的安全配置,加密技术,防火墙技术,入侵检测