shell-循环知识以及例子

循环

流程控制:if

#!/usr/bin/bash
###################################################
#         install apache                          #
#         v1.0 by kuibaobao                       #
###################################################
#if ping -c1 www.baidu.com &>/dev/null;then
ping -c1 www.baidu.com &>/dev/null
if [ $? -eq 0 ];then
	yum -y install httpd
	systemctl start httpd
	systemctl enable httpd
	firewall-cmd --permanent --add-service=http
	firewall-cmd --permanent --add-service=httpd
	firewall-cmd --reload
	sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
	setenforce 0                #设置SELinux成为permissive模式 临时关闭selinux的  
	curl http://127.0.0.1 &>/dev/null
	if [ $? -eq 0 ];then
		echo "Apache ok..."
	fi
elif ping -c1 www.baidu.com &>/dev/null; then
	echo "check dns..."
else
	echo "check ip address!"
fi

多系统配置yum源

  • 根据不同的系统配置yum源
#!/usr/bin/bash
###############################################
#            yum config                       # 
#           by kuibaobao                      #
###############################################
#获取版本号cat /etc/redhat-release
os_vsrsion=`cat /etc/redhat-release | awk '{print $4}' | awk -F"." '{print $1"."$2}'`
[ -d /etc/yum.repos.d ] || mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/{*.repos,bak}
if [ "$os_version"="7.3"]; then
elif [ "$os_version"="6.8"]; then
elif [ "$os_version"="6.3"]; then
else
	echo "No version"
fi
  • ss -tnlp | grep vsftpd //vsftpd 地址 端口 pid
  • netstat -tnlp | grep vsftpd

for 空行的秘密

  • IFS $’\n’ //循环次数的分割方式
#!/usr/bin/bash
#ping check
> ip.txt
for i in {2..254}
do
      ip=125.124.15.$i
      ping -c1 $ip &>/dev/null
      if [ $? -eq 0 ]; then
      	echo "$ip" | tee -a ip.txt
      fi
done
#wait                         #等待所有的后台程序进行完毕
echo "finishi...."

  • 从文件中获取ip
#!/urs/bin/bash
for ip in `cat ip.txt`
do
	ping -c1 -W1 $ip &>/dev/null
	if [ $? -eq 0 ];then
		echo "$ip is up "
	fi
done
  • 实现批量用户创建
#!/usr/bin/bash
#######################
#   useradd           #
#v2.0 by kuibaobao    #
#######################
while :
do
	read -p "please enter prefix & passwd & num :" prefix passwd number
	printf "user infomation
	----------------------------------------
	user prefix : $prefix
	user passwd : $passwd
	user number : $number
	----------------------------------------
	"
	read -p "Are you sure?[y/n]:" action
	if [ "$action" = "y" ]; then
		break
	fi
done

for i in `seq -w $number`   
do
	user=$prefix$i
	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


  • 文件中批量用户的创建
#!/usr/bin/bash

if [ $# -eq 0 ]; then
        echo "usage:`basename $0` file"
        exit 1
fi

if [ ! -f $1 ]; then
        echo "error file"
        exit 2
fi
#IFS=$'\n'
IFS='
'
for line in `cat $1`
do
	if [ ${#line} -eq 0 ]; then
		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

批量远程主机的ssh配置

  • 简易版
#!/usr/bin/bash
#v1.0 by kuibaobao
for ip in `cat ip.txt`
do      
        {
                ping -c1 -W1 $ip &>/dev/null
                if [ $? -eq 0 ]; then
                        ssh $ip "sed -ri '/^#UseDNS/cUseDNS no' /etc/ssh/ssh_config"
                fi
                
        }&
done    
wait
echo "all ok..."

while until循环

  • while循环创建用户
#!/usr/bin/bash
# while-useradd
#v1.0 by kuibaobao
while read line
do
	if [ ${#line} -eq 0 }; then
		continue
	fi
        user=`echo "$line"|awk '{print $1}'`
        pass=`echo "$line"|awk '{print $2}'`
        id $user &>/dev/null
        if [ $? -eq 0 ]; then
                echo "$user already exists"
        else
                useradd $user
                echo "$pass"|passwd --stdin $user &>/dev/null
                if [ $? -eq 0 ]; then
                        echo "$user is created."
                fi
        fi
done < user.txt                         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lao_wine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值