shell脚本案例

前言:以下案例难度会逐渐增加!

01 自动检测服务器的连通性(青铜版)

 1 #!/bin/bash
 2 i=0
 3 while((i<254))
 4 do
 5 i=$(($i+1))
 6     ping 192.168.43.$i -w 1 -c 1 >nul
 7     if [ $? -eq 0 ];then
 8         echo 192.168.43.$i is good!
 9     else
10         echo 192.168.43.$i is bad! &>/dev/null
11     fi
12 done

这只是简单的赋予变量进行的案例,使用循环语句,但是缺点就是互动性太低,而且太呆板了,要是ip段不同,那不是会很麻烦,大家想想,有没有灵活的方法,人肉输入ip来检测?

02 自动检测服务器的连通性(白银版)(人肉输入版)

1 #!/bin/bash
2 ping 192.168.43.$1 -w 1 -c 1 >null
3 if [ $? -eq 0 ];then
4         echo 192.168.43.$1 is good!
5         else
6         echo 192.168.43.$1 is bad! 
7 fi

只要稍稍把赋值改动一下,就可以实现手动输入ip进行检测。但是就是每次就只能检测一个ip,费时又费力,。要是换成另一种方式呢?将需要检测的ip放到一个文件,调用文件内的内容,是不是就更加方便又高效。

03 自动检测服务器的连通性(黄金版)

前提准备:在root的目录下创建了一个server_ip.txt,保存了需要检测的ip地址。

 1 #!/bin/bash
 2 i=/root/server_ip.txt
 3 for line in `cat $i`
 4 do
 5     if [ ${#line} -eq 0 ];then
 6     continue
 7     fi
 8     ip=`echo $line|awk '{print $1}'`
 9     ping $ip -w 1 -c 1 >null
10     if [ $? -eq 0 ];then
11         echo $ip is good!
12     else
13         echo $ip is bad!
14     fi
15 done 

 这样就可以轻松、灵活并且批量地检测ip地址,但是这样的输出结果,看起来还是特别的单调,但是good和bad能够更改样式就好。这个是可以实现的哦。

 1 #!/bin/bash
 2 i=/root/server_ip.txt
 3 for line in `cat $i`
 4 do
 5     if [ ${#line} -eq 0 ];then
 6     continue
 7     fi
 8     ip=`echo $line|awk '{print $1}'`
 9     ping $ip -w 1 -c 1 >null
10     if [ $? -eq 0 ];then
11         echo -e $ip is "\033[40;32m good \033[0m!"
12     else
13         echo -e "$ip is \033[40;31m bad \033[0m!"
14     fi
15 done 

只需要稍微改动一下字符串的输出样式,就可以得到更加好看的输出结果,如果对输出字体颜色样式不懂,可以参考一下的文章。

 https://www.cnblogs.com/HuangJiaPing/articles/17501540.html

 

posted on 2023-06-24 00:30  学习永远没有尽头  阅读(8)  评论(0编辑  收藏  举报