Shell循环for while(四)

目录

for 循环

案例1

案例2

案例2合并 

案例3

Shell循环:while until

Expect


for 循环

#!/bin/bash
for i in {1..10}
     do
useradd "user$i"
done
~        

案例1

#!/bin/bash
#ping
#常规网络测试脚本
ip=192.168.238.132                     
ping -c1 -W1 $ip &> /dev/null
                       
if [ $? -eq 0 ];then
 echo "$ip" | tee -a ip.txt
fi
~                           
#!/bin/bash
#ping
#测试多个对象
for i in {100..133}
do
ip=192.168.238.$i

ping -c1 -W1 $ip  &> /dev/null 
        if [ $? -eq 0 ];then
             echo "$ip" | tee -a ip.txt
        fi
done

案例2

#!/bin/bash
#name 
#time
PASSWORD_FILE=/root/user.txt

#设置循环,读取文件,创建用户
for user in `cat $PASSWORD_FILE`
do
        id $user &> /dev/null
#如果用户不存在,则创建用户,否则提示已经存在
        if [ $? -eq 0 ];then
                echo "$user:用户已存在"
        else
                useradd $user
                echo "$pass" | passwd --stdin $user &> /dev/null
#判断用户是否创建成功
                if [ $? -eq 0 ];then
                        echo "$user:用户创建成功"
                else
                        echo "$user:用户创建失败"

                fi

        fi
        done

案例2合并 


  1 #!/bin/bash
  2 #name 
  3 #time
  4 #UfileCreateU.sh
  5 pass=123
  6 PASSWORD_FILE=/root/user.txt
  7 #判断脚本是否有参数
  8         if [ $# -eq 0 ];then             # $#: 传递给脚本或者函数参数的个数,计数的     
  9                 echo "usage:$0 filename" # $0:当前脚本文件名
 10 
 11 #判断用户是否是文件
 12                 if [ ! -f $PASSWORD_FILE ];then
 13                         echo "erro filename"
 14                 else
 15                         echo "正确文件"
 16 
 17 #设置循环,读取文件,创建用户
 18 for user in `cat $PASSWORD_FILE`
 19 do
 20         id $user &> /dev/null
 21 
 22 #如果用户不存在,则创建用户,否则提示已经存在
 23         if [ $? -eq 0 ];then
 24                 echo "$user:用户已存在"
 25         else
 26                 useradd $user
 27                 echo "$pass" | passwd --stdin $user &> /dev/null
 28 
 29 #判断用户是否创建成功
 30                         if [ $? -eq 0 ];then
 31                                 echo "$user:用户创建成功"
 32                         else
 33                                 echo "$user:用户创建失败"
 34                         fi
 35         fi
 36 done
 37                 exit 2
 38                 fi
 39         exit 1
 40         fi
 41 

案例3

 前提1:完成密钥登录配置

ssh-keygen  
ssh-copy-id IP地址   /*要登录的IP地址*/
ssh root@Ip 测试
######################36---60 行  其他为上个案例得添加
#!/bin/bash
  2 #name 
  3 #time
  4 #UfileCreateU.sh
  5 pass=123
  6 PASSWORD_FILE=/root/user.txt
  7 #判断脚本是否有参数
  8         if [ $# -eq 0 ];then             # $#: 传递给脚本或者函数参数的个数,计数的     
  9                 echo "usage:$0 filename" # $0:当前脚本文件名
 10 
 11 #判断用户是否是文件
 12                 if [ !   -f $1 ];then
 13                         echo "erro filename"
 14                 else
 15                         echo "正确文件"
 16 
 17 #设置循环,读取文件,创建用户
 18 for user in `cat $PASSWORD_FILE`
 19 do
 20         id $user &> /dev/null
 21 
 22 #如果用户不存在,则创建用户,否则提示已经存在
 23         if [ $? -eq 0 ];then
 24                 echo "$user:用户已存在"
 25         else
 26                 useradd $user
 27                 echo "$pass" | passwd --stdin $user &> /dev/null
 28 
 29 
 30 
 31 
 32 #判断用户是否创建成功,如果成功则改密码
 33                         if [ $? -eq 0 ];then
 34                                 echo "$user:用户创建成功"
 35                                 read -p "请输入用户密码:" password
 36 #循环调用IP地址                 
 37 for i in $(cat ip.txt)
 38 do
 39 #测试IP是否在线
 40 {
 41         ping -c1 -W1 $i &> /dev/null
 42         if [ $? -eq 0 ];then
 43 #修改密码
 44                 ssh $i "echo $password | passwd --stdin root"
 45 #修改成功与否记录
 46 
 47                 if [ $? -eq 0 ];then
 48                         echo $i >> ok.txt
 49                         ssh $i
 50                         echo "$i 登录成功"  cat $user
 51 
 52                 else
 53                         echo $i >> fail.txt
 54                 fi
 55 #不在线得主机记录
 56         else
 57                 echo $i >> meigai.txt
 58         fi
 59 }&
 60 done
 61 
 62 
 63                         else
 64                                 echo "$user:用户创建失败"
 65                         fi
 66         fi
 67 done
 68                 exit 2
 69                 fi
 70         exit 1
 71         fi
 72 

Shell循环:while until

 

Expect

 

 #!/usr/bin/expect
  2 #expect.sh
  3 #远程登录128服务器
  4 spawn ssh root@192.168.238.128  #spawn expect 内部命令,启动一个shell程序
  5 
  6         expect {                #expect 期望哪些内容
  7                 "yes/no"{ send "yes\r;"         #yes/no 就发送 \r  回车
  8                                 #exp_continue,跳过循环,就继续下一条语句
  9                           exp_continue "password:" { send "123456\r"};
 10                         }
 11                 }
 12         interact                #允许用户交互
 13 


版权声明:本文为benziwu原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。