您的位置:首页 > 运维架构 > Shell

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

2020-07-26 14:58 639 查看

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

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

1.	for  变量名  in  值列表
2.	do
3.	    命令序列
4.	done
5.
6.	for  变量名  in  {1..5}
7.	do
8.	    命令序列
9.	done
10.	for  变量名  in  `seq 5`
11.	do
12.	    命令序列
13.	done
14.
15.	for  变量名  in  `ls /etc/*.conf`
16.	do
17.	    命令序列
18.	done

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

1.	[root@dyy ~]# vim for01.sh
2.	#!/bin/bash
3.	for i in 1 2 3 4 5
4.	do
5.	        echo "hello world"
6.	done
7.	[root@dyy ~]# chmod +x for01.sh
8.	[root@dyy ~]# ./for01.sh

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

1.	[root@dyy ~]# vim chkhosts.sh
2.	#!/bin/bash
3.	for i in {1..254}
4.	do
5.	    ping -c 3 -i 0.2 -W 1 192.168.4.$i &> /dev/null
6.	    if [ $? -eq 0 ] ; then
7.	        echo "Host 192.168.4.$i is up."
8.	    else
9.	        echo "Host 192.168.4.$i is down."
10.	    fi
11.	done
12.	[root@dyy ~]# chmod +x chkhosts.sh

4)测试、验证脚本

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

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

1.	[root@dyy ~]# vim addfor.sh
2.	#!/bin/bash
3.	for i in `cat /root/user.txt`
4.	do
5.	     useradd $i
6.	     echo 123456 | passwd --stdin $i
7.	done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: