为了能到远方,脚下的每一步都不能少.|

南哈哈

园龄:3年10个月粉丝:2关注:0

Shell循环:for

for循环

  循环次数是固定的

 

for语法结构

shell:
for 变量名 [in 取值列表]
do
循环体
done
C语言:
for ((初值;条件;步长))
do
循环体
done

 

示例

实现批量主机ping探测
#!/bin/bash
> ip.txt # 重定向,文件内容设置为空。
for i in {2..254}
do
{
ip=192.168.128.${i}
ping -c1 ${ip} &>/dev/null
if [ $? -eq 0 ];then
echo "$ip is up" | tee -a ip.txt
else
echo "$ip is down"
fi
}&
done
wait # 等前面所有的后台进程结束,执行以下命令。
echo "finish....."
实现批量用户创建
#!/bin/bash
while true
do
read -p "Please enter prefix & passwd & num[nan 123 5]" prefix pass num
printf "user infomation:
-----------------------
user prefix: $prefix
user passwd: $pass
user number: $num
-----------------------
"
read -p "Are you sure?[y/n]: " action
if [ "$action" = "y" ];then
break
fi
done
for i in `seq -w $num` # -w 等位补齐
do
user=$prefix$i
id $user &>/dev/null
if [ $? -eq 0 ];then
echo "user $user already exists"
else
useradd $user
echo "$pass" | passwd --stdin $user &>/dev/null
if [ $? -eq 0 ];then
echo "$user is create."
fi
fi
done
实现文件中批量用户创建1
cat user.list
nan
aaa
#!/bin/bash
# 定义密码
PASSWD=123.com
#定义脚本传参是否大于0
if [ $# -eq 0 ];then
echo "Usage: sh `basename $0` file"
exit 500
fi
#定义脚本传参是否为文件
if [ ! -f $1 ];then
echo "$1 is not file"
exit 501
fi
#循环创建用户
for user in `cat user.list`
do
id $user &>/dev/null
if [ $? -eq 0 ];then
echo "user '$user' already exists"
else
useradd $user
echo "$PASSWD" | passwd --stdin $user &>/dev/null
if [ $? -eq 0 ];then
echo "'$user' is created."
fi
fi
done
实现文件中批量用户创建2
cat user.list
nan123 123
#!/bin/bash
#希望for处理文件按回车分隔,而不是空格或tab
#重新定义分隔符,IFS内部字段分隔符
#IFS=$'\n'
IFS='
'
for line in `cat user.list`
do
#for循环空行不会影响脚本
#if [ ${#line} -eq 0 ];then #判断user.list 用户信息行内容是否为0
#continue
#fi
user=`echo $line | awk '{print $1}'`
pass=`echo $line | awk '{print $2}'`
id $user &>/dev/null
if [ $? -eq 0 ];then
echo "user '$user' already exists"
else
useradd $user
echo "$pass" | passwd --stdin $user &>/dev/null
if [ $? -eq 0 ];then
echo "'$user' is created."
fi
fi
done
实现批量主机密码修改
#!/bin/bash
read -p "Please enter a New Password: " pass
for ip in $(cat ip.txt)
do
{
ping -c1 $ip &>/dev/null
if [ $? -eq 0 ];then
ssh $ip "echo $pass | passwd --stdin root"
if [ $? -eq 0 ];then
echo "$(date +%F) ${ip} update password is ok!" >> alter_pass_`date +%F`_info.log
else
echo "$(date +%F) ${ip} update password is error!" >> alter_pass_`date +%F`_error.log
fi
else
echo "$(date +%F) ${ip} ping is error!" >> alter_pass_`date +%F`_error.log
fi
}&
done
wait
echo "finish..."
实现批量远程主机ssh配置
#!/bin/bash
for ip in `cat ip.txt`
do
{
ping -c1 $ip &>/dev/null
if [ $? -eq 0 ];then
ssh $ip "sed -i '/^#UseDNS/c UseDNS no' /etc/ssh/sshd_config"
ssh $ip "sed -i '/^GSSAPIAuthentication/c GSSAPIAuthentication no' /etc/ssh/sshd_config"
ssh $ip "sed -i '/^SELINUX=/c SELINUX=enforcing' /etc/selinux/config"
ssh $ip "systemctl stop firewalld && systemctl disable firewalld"
ssh $ip "setenforce 0"
fi
}&
done
wait
echo "all ok ..."

 

本文作者:南哈哈

本文链接:https://www.cnblogs.com/nanruosen/p/16315301.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   南哈哈  阅读(191)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起