一、循环语句
1.1:for循环语句
1.1.1:for语句结构
- 读取不同的变量值,用来逐个执行同一组命令
- 相当于建立了一个数据池,然后for语句一个一个拿数据直到拿完为止
语句结构
for 变量名 in 取值列表
do
命令序列
done
语句结构举例
for 收件人 in 邮件地址列表
do
发送邮件
done
1.1.2:使用for批量添加用户
- 用户名存放在users.txt文件中,每行一个
- 初始密码均设为123456
[root@localhost opt]# vim user.txt //建立一个数据池,里面有张三......用户名
zhangsan
lisi
wangermazi
zhaoliu
tianji
wangba
[root@localhost opt]# vim useradd.sh
#!/bin/bash
Lists=$(cat /opt/user.txt) //调用查看数据池
for bb in $Lists
do
useradd $bb
echo "123456" | passwd --stdin $bb //将123456 设为登录密码,--stdin(免人机交互)文件对文件 不需要键盘输入文件再跟文件交互了,自动一个账户一个账户设置密码
echo "$bb添加成功"
done
[root@localhost opt]# chmod +x useradd.sh
[root@localhost opt]# ./useradd.sh
Changing password for user zhangsan.
passwd: all authentication tokens updated successfully.
zhangsan添加成功
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
Changing password for user lisi.
passwd: all authentication tokens updated successfully.
lisi添加成功
Changing password for user wangermazi.
passwd: all authentication tokens updated successfully.
wangermazi添加成功
Changing password for user zhaoliu.
passwd: all authentication tokens updated successfully.
zhaoliu添加成功
Changing password for user tianji.
passwd: all authentication tokens updated successfully.
tianji添加成功
Changing password for user wangba.
passwd: all authentication tokens updated successfully.
wangba添加成功
[root@localhost opt]# cat /etc/passwd | grep "bash"
root:x:0:0:root:/root:/bin/bash
dd:x:1000:1000:cn-tangzheng:/home/dd:/bin/bash
zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
lisi:x:1002:1002::/home/lisi:/bin/bash
wangermazi:x:1003:1003::/home/wangermazi:/bin/bash
zhaoliu:x:1004:1004::/home/zhaoliu:/bin/bash
tianji:x:1005:1005::/home/tianji:/bin/bash
wangba:x:1006:1006::/home/wangba:/bin/bash
脚本可以适当修改优化:如 echo “123456” | passwd --stdin $bb &> /dev/null
将设置密码产生的提示数据放入黑洞中
批量删除用户:在刚刚的基础上修改
[root@localhost opt]# vim useradd.sh
#!/bin/bash
Lists=$(cat /opt/user.txt)
for bb in $Lists
do
userdel -r $bb '-r 删除家目录'
#echo "123456" | passwd --stdin $bb &> /dev/null
echo "$bb删除成功"
done
[root@localhost opt]# ./useradd.sh
zhangsan删除成功
lisi删除成功
wangermazi删除成功
zhaoliu删除成功
tianji删除成功
wangba删除成功
[root@localhost opt]# cat /etc/passwd | grep "bash"
root:x:0:0:root:/root:/bin/bash
dd:x:1000:1000:cn-tangzheng:/home/cn-tangzheng:/bin/bash
2.1.3:示例–根据IP地址检查主机状态
- 检测IP地址192.168.197.0-192.168.197.10段落
- 使用ping命令检测各主机的连通性
[root@localhost opt]# vim ipchk.sh
#!/bin/bash
for ((i=1;i<=10;i++))
do
ping -c 3 -i 0.2 -W 3 "192.168.197.$i" &> /dev/null
if [ $? -eq 0 ]