AI智能
改变未来

shell使用for循环结构检测多个主机的存活状态

本案例要求编写一个Shell脚本chkhosts.sh,利用for循环来检测多个主机的存活状态,相关要求及说明如下:
• 对192.168.4.0/24网段执行ping检测
• 脚本能遍历ping各主机,并反馈存活状态

在Shell脚本应用中,常见的for循环采用遍历式、列表式的执行流程,通过指定变量从值列表中循环赋值,每次复制后执行固定的一组操作。
for循环的语法结构如下所示:

1.	for  变量名  in  值列表2.	do3.	    命令序列4.	done5.6.	for  变量名  in  {1..5}7.	do8.	    命令序列9.	done10.	for  变量名  in  `seq 5`11.	do12.	    命令序列13.	done14.15.	for  变量名  in  `ls /etc/*.conf`16.	do17.	    命令序列18.	done

步骤一:练习for循环基本用法
脚本1,通过循环批量显示5个hello world:

1.	[root@dyy ~]# vim for01.sh2.	#!/bin/bash3.	for i in 1 2 3 4 54.	do5.	        echo \"hello world\"6.	done7.	[root@dyy ~]# chmod +x for01.sh8.	[root@dyy ~]# ./for01.sh

步骤二:批量检测多个主机的存活状态
1)编写脚本如下:
命令备注:ping命令可以测试某台主机的连通性,
使用-c选项可以设置ping的次数,
使用-i选项可以设置多次ping之间的间隔时间(单位秒),
使用-W选项可以设置ping不通时的超时时间(单位秒)。

1.	[root@dyy ~]# vim chkhosts.sh2.	#!/bin/bash3.	for i in {1..254}4.	do5.	    ping -c 3 -i 0.2 -W 1 192.168.4.$i &> /dev/null6.	    if [ $? -eq 0 ] ; then7.	        echo \"Host 192.168.4.$i is up.\"8.	    else9.	        echo \"Host 192.168.4.$i is down.\"10.	    fi11.	done12.	[root@dyy ~]# chmod +x chkhosts.sh

4)测试、验证脚本

[root@dyy ~]# ./chkhosts.shHost 192.168.4.5 is up.Host 192.168.4.6 is down

步骤三:创建账户的案例
创建users.txt,写入无规律的账户名称,最后使用for循环读取该文件,批量创建账户并设置密码。

1.	[root@dyy ~]# vim addfor.sh2.	#!/bin/bash3.	for i in `cat /root/user.txt`4.	do5.	     useradd $i6.	     echo 123456 | passwd --stdin $i7.	done
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » shell使用for循环结构检测多个主机的存活状态