欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Shell脚本应用(for、while循环语句和case分支语句)

程序员文章站 2022-03-10 23:10:08
1、for:读取不同的变量值,逐个执行同一组命令,直到取值完毕退出,变量值以空格分隔 语法: for 变量值 in 取值列表 do 命令序列 done 2、while:重复测试某个条件,成立则执行,进入下一个循环,直到条件不成立为止 语法: while 【条件测试 】 do 命令 添加更改测试条件语 ......

1、for:读取不同的变量值,逐个执行同一组命令,直到取值完毕退出,变量值以空格分隔

语法:

for  变量值  in  取值列表

do

        命令序列

done

2、while:重复测试某个条件,成立则执行,进入下一个循环,直到条件不成立为止

语法:

while 【条件测试 】

do

         命令

         添加更改测试条件语句

done

例:批量添加用户(stu1~stu20)

prefix=“stu”

i=1

while 【 $i  -le  20 】

do

   useradd  ${prefix}$i

   echo  “123456”  |  passwd  --stdin ${prefix}$i  &> /dev/null

   let  i++

done

while条件为true:代表永远为真,死循环,必须使用exit或break命令才结束循环

必须进行递增,避免死循环:方法:

Let  i++     let  i=i+1      i=`expr i+1`

3、case:针对变量的不同取值,分别执行不同的命令序列

语法:

case  变量值  in

模式1)

             命令序列1

             ;;

模式2)

             命令序列2

             ;;

             ……

*)

            默认命令序列

esac

取值时,中括号【】,代表任选其一 ,横杠 - ,代表取值范围,竖杠 | ,代表或者

Shell脚本(for、while和case语句的应用示例)

一、for循环语句

1、根据姓名列表批量添加用户

步骤:首先创建一个姓名列表 vim /root/users.txt 然后创建脚本vim  uaddfor.sh批量添加用户

 Shell脚本应用(for、while循环语句和case分支语句)

Shell脚本应用(for、while循环语句和case分支语句)

授权并执行后查看用户是否已创建

 Shell脚本应用(for、while循环语句和case分支语句)

2、根据ip地址列表检查主机状态

步骤:首先创建一个ip地址列表文件 vim /root/padds.txt 然后创建脚本vim chkhosts.sh

Shell脚本应用(for、while循环语句和case分支语句)

Shell脚本应用(for、while循环语句和case分支语句)

授权并执行

 Shell脚本应用(for、while循环语句和case分支语句)

二、while循环语句

1、批量添加规律编号的用户

步骤:创建vim uaddwhile.sh脚本

Shell脚本应用(for、while循环语句和case分支语句)

授权并执行后查看用户是否已创建

 Shell脚本应用(for、while循环语句和case分支语句)

2、猜价格游戏

步骤:创建脚本vim pricegame.sh

Shell脚本应用(for、while循环语句和case分支语句)

授权并执行

 Shell脚本应用(for、while循环语句和case分支语句)

三、case分支语句

1、检查用户输入的字符类型

步骤:创建脚本vim hitkey.sh

Shell脚本应用(for、while循环语句和case分支语句)

授权并执行

 Shell脚本应用(for、while循环语句和case分支语句)

2、编写系统服务脚本

步骤:编写脚本 vim myprog

Shell脚本应用(for、while循环语句和case分支语句)

Shell脚本应用(for、while循环语句和case分支语句)

授权并执行

 Shell脚本应用(for、while循环语句和case分支语句)

四、实验案例

1、编写getarp.sh脚本文件

(1)通过arping命令发送ARP请求,根据反馈结果记录MAC地址。

(2)将网段地址(如192.168.4.)赋值给变量NADD,作为检测地址的前缀。

(3)使用while循环语句,重复检测目标并记录MAC地址,主机地址从1-254。

脚本如下:

[root@localhost ~]# vi getarp.sh

#!/bin/bash

# 1. 定义网段地址、MAC列表文件

NADD="192.168.4."

FILE="/etc/ethers"

# 2. 发送ARP请求,并记录反馈结果

[ -f $FILE ] && /bin/cp -f $FILE $FILE.old       //备份原有文件

HADD=1                                           //定义起始扫描地址

while [ $HADD -lt 128 ]

do

    arping -c 2 -w 1 ${NADD}${HADD} &> /dev/null

    if [ $? -eq 0 ] ; then

       arp -n | grep ${NADD}${HADD} | awk '{print $1,$3}' >> $FILE

    fi

    let HADD++

done

[root@localhost ~]# chmod +x getarp.sh

[root@localhost ~]# ./getarp.sh               //执行检测程序

[root@localhost ~]# cat /etc/ethers               //确认记录结果

192.168.4.12 00:0C:29:C3:F8:51

192.168.4.110 00:50:56:C0:00:01

…… //省略部分内容

2、编写scanhost.sh脚本

(1)有很多方法可以检测一个主机是否开启匿名FTP服务,这里采取以wget下载工具访问FTP根目录的方式,若能够成功列表,则视为匿名FTP已开启,否则视为关闭。

(2)通过awk命令过滤出/etc/ethers文件中的所有IP地址,赋值给变量TARGET。

(3)使用for循环语句,读取TARGET变量中的IP地址,重复探测FTP开启情况。

脚本如下:

[root@localhost ~]# vi scanhost.sh

#!/bin/bash

TARGET=$(awk '{print $1}' /etc/ethers)

echo "以下主机已开放匿名FTP服务:"

for IP in $TARGET

do

    wget ftp://$IP/ &> /dev/null

        if [ $? -eq 0 ] ; then

            echo $IP

            rm -rf index.html                //删除测试产生的临时文件

        fi

done

[root@localhost ~]# chmod +x scanhost.sh

[root@localhost ~]# ./scanhost.sh           //执行脚本,确认扫描结果

以下主机已开放匿名FTP服务:

192.168.4.110

192.168.4.129

 
 文章参考微信公众号:L宝宝聊IT