web安全day37:Linux脚本判断和循环,编写脚本实现内网主机存活批量检测

判断语句 linux中判断使用if来实现。具体语法如下: if 条件 then 成立子语句 fi 初试,单分支 我们可以写一个最简单的判断语句进行测试。 新建一个if.sh #!/bin/bash if [ 3 -lt 5 ] then echo "yes" else echo "no" fi -lt表示小于,-gt表示大于,-eq表示等于。linux中对于缩进没有严格限制,我们缩进4个字符只是为了自己阅读方便。 注意修改其权限 chomd +x if.sh 运行一下试试 进阶,多分枝 输入一个数,让其和10进行比较。 #!/bin/bash read -p "please input a num:" NUM if [ $NUM -lt 10 ] then echo "lt" elif [ $NUM -eq 10 ] echo "eq" else echo "gt" fi 实战:内网单台主机存活测试 ping -c2 -i0.2 -W2 192.168.1.1 &> /home/result.txt 这条命令表示ping 192.168.1.1时只发送两个测试包,间隔0.2s,对于响应包最多等待2s,然后将输出结果不显示在屏幕上,而是保存在/home/result.txt中。 根据这条命令写一个带有条件判断语句的脚本pctest.sh。 #!/bin/bash read -p "please input the ip:" IP if `ping -c2 -i0.2 -W2 $IP &>/home/result.txt` then echo "yes" else echo "no" fi 循环语句 for循环 for循环主要根据循环次数进行循环。 for 变量 in 取值列表 do 子语句 done 写一个for循环脚本forxunhuan.sh #!/bin/bash for i in {1..10} do echo "hello" done 输出从1到10 #! /bin/bash for i in {1..10} do echo $i 还有一种方法 直接使用echo {1..10} while循环 while循环主要根据循环条件进行循环。 while 条件 do 子语句 done #!/bin/bash NUM=0 while [ $NUM -lt 10 ] do echo $NUM let NUM++ done 实战:内网多台主机存活测试 for循环方法 #!/bin/bash for IP in {1..254} do if `ping -c2 -i0.2 -W2 192.168.1.$IP &> /home/result` then echo -e "192.168.1.$IP is \033[32mup\033[0m" else echo -e "192.168.1.$IP is \033[31mdown\033[0m" fi done while循环方法 #!/bin/bash IP=1 while [ $IP -lt 254 ] do if `ping -c2 -i0.2 -W2 192.168.1.$IP &> /home/result` then echo -e "192.168.1.$IP is \033[32mup\033[0m" else echo -e "192.168.1.$IP is \033[31mdown\033[0m" fi let IP++ done 注意 \033[表示颜色渲染 32m是绿色渲染 31m是红色渲染 0m是颜色渲染停止 case语句 case 变量 in 模式1) 子语句 ;; *) 子语句 esac case $1 in redhat) echo "centos" ;; centos) echo "redhat" ;; *) echo "Useage $0 {redhat|centos}" esac 函数 将一部分代码保存在变量中。 设计一个函数A,运行A的时候屏幕输出ok [root@bogon home]# A(){ > echo ok > echo yes > return 0 > } echo $?//查看上一次函数执行后的成果,即返回值 配合case语句使用 [root@bogon home]# cat case.sh CASE1(){ echo this is case1 return 0 } CASE2(){ echo this is case2 return 0 } case $1 in c1) CASE1 ;; c2) CASE2 ;; esac 这其实就是linux中带有后缀命令的基本格式 比如我们输入 service httpd status 如果输入 service httpd xxx 说明后缀是确定的。 实战:给nginx添加启动停止脚本 我们之前学习过nginx,知道nginx的启动和停止是没有service服务支持的,需要我们手动开始和停止 我们可以通过case和函数的配合使用脚本来进行。 [root@bogon home]# cat nginxd.sh #!/bin/bash nginx=/usr/local/nginx/sbin/nginx start(){ echo "nginx starting ..... [ok]" $nginx } stop(){ echo "nginx stopping ..... [ok]" $nginx -s stop } status(){ if `ss -anptl | grep nginx > /home/result` then echo "nginx starting ...." else echo "nginx stop ...." fi } case $1 in start) start ;; stop) stop ;; status) status ;; esac 欢迎关注博主的公众号:旁骛OtherThing,不定期更新技术干货。

提供全面的网站源码学习交流,小程序、APP、H5、支付、游戏、区块链、商城、直播、影音、小说、公众号等源码学习交流。
精品源码资源网 » web安全day37:Linux脚本判断和循环,编写脚本实现内网主机存活批量检测
赞助VIP 享更多特权,立即登录下载海量资源
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡