本案例要求编写一个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