Shell脚本编程学习笔记(五)---- 循环语句
本文已参与[新人创作礼]活动,一起开启掘金创作之路。
循环语句
循环在每种编程语言中,都有提到且都有具体的应用;
循环的存在是为了简化代码量冗余的一种方式;
shell常用的就是for循环与while循环等。详细介绍如下:
for
for 变量名 in [ 取值列表 ]
do
循环体
done
例如 检查同网段中是否有其他主机
#!/usr/bin/bash
#获取本机能联通的其他主机对应的IP
>ip.txt #清空此文件
for i in {1..254}
do
ip=192.168.200.$i
{
ping -c2 -W1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo "$ip" >> ip.txt
fi
}& #放在子shell里,并配置高并发
done
wait
echo "Get Ip Is OK!"
#!/usr/bin/bash
#通过读文件的方式,for循环批量创建用户(要提前准备个装有用户名的文件user.txt)
for i in $(cat user.txt)
do
id $i &>/dev/null
if [ $? -ne 0 ];then
useradd $i && \
echo "2020006473" |passwd --stdin $i &>/dev/null
echo "$i is OK!"
else
echo "$i is Create Faile!!!"
fi
done
while
while 条件测试
do
循环体
done
例如 while循环批量创建用户
#!/usr/bin/bash
#通过读文件的方式,while循环批量创建用户(要提前准备个装有用户名的文件user.txt)
while read user
do
id $user &>/dev/null
if [ $? -eq 0 ];then
echo "useradd $user is already exists"
else
useradd $user &>/dev/null
echo "useradd $user is Created..."
fi
done<user.txt
#!/usr/bin/bash
#通过读文件的方式,while循环批量创建用户(要提前准备个装有用户名,密码的文件user.txt)
while read user
do
u=$(echo $user|awk '{print $1}')
p=$(echo $user|awk '{print $2}')
id $u &>/dev/null
if [ $? -eq 0 ];then
echo "useradd $u is already exists"
else
useradd $u &&\
echo "$p"|passwd --stdin $u &>/dev/null
echo "useradd $u is Created Passwd Is Ok."
fi
done<user.txt
密钥分发
vi key.sh
#!/usr/bin/bash
#1.获取主机对应的IP
>ip.txt #清空此文件
for i in {1..254}
do
ip=192.168.200.$i
{
ping -c2 -W1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo "$ip" >> ip.txt
fi
}& #放在子shell里,并配置高并发
done
#2.生产对应密钥
if [ ! -f ~/.ssh/id_rsa ];then
ssh-keygen -P "" -f ~/.ssh/id_rsa #生成密钥
fi
#3.批量分发密钥
yum -y reinstall expect
while read line
do
pass=2020006473
./usr/bin/expect <<-EOF
spawn ssh-copy-id root$line
expect {
"yes/no"{send"yes\r";exp_continue}
"password:"{send"$pass\r"}
}
expect eof
EOF
done<ip.txt
此案例暂未完全成功,但其中精华值得观看。
感谢大家,点赞,收藏,关注,评论!
浙公网安备 33010602011771号