笔记整理1.18-ip批量配置脚本分析-键盘输入赋值-条件判断
ip批量配置脚本
# !/bin/bash touch /ip.txt read -p "Please put in the version(1.centos5.x-6.x 2.centos7.x 3.ubuntu or debian): " ZZ read -p "Please put in the network name: " WW echo "Please put in the ip ranges: " cat> /ip.txt CC=-1 DD=1 while read ips; do a1=`echo $ips|awk -F'/'+ '{ print $2 }'` a2=`echo $ips|awk -F'/'+ '{ print $1 }'` a3=`echo $a2 | awk -F. '{print $1"."$2"."$3}'` a4=`echo ${a2##*.}` let CC=$CC+1 let n=$a4+2 if [[ $ZZ -eq 1 ]];then cd /etc/sysconfig/network-scripts/ if [[ $a1 -eq 24 ]];then touch ./ifcfg-$WW-range$CC let y=$n+252 echo "DEVICE=$WW BOOTPROTO=static CLONENUM_START=$DD IPADDR_START=$a3.$n IPADDR_END=$a3.$y PREFIX=24 ONBOOT=yes ARPCHECK=no">>./ifcfg-$WW-range$CC let DD=$DD+253 elif [[ $a1 -eq 26 ]];then touch ./ifcfg-$WW-range$CC let y=$n+60 echo "DEVICE=$WW BOOTPROTO=static CLONENUM_START=$DD IPADDR_START=$a3.$n IPADDR_END=$a3.$y PREFIX=26 ONBOOT=yes ARPCHECK=no">>./ifcfg-$WW-range$CC let DD=$DD+61 elif [[ $a1 -eq 27 ]];then touch ./ifcfg-$WW-range$CC let y=$n+28 echo "DEVICE=$WW BOOTPROTO=static CLONENUM_START=$DD IPADDR_START=$a3.$n IPADDR_END=$a3.$y PREFIX=27 ONBOOT=yes ARPCHECK=no">>./ifcfg-$WW-range$CC let DD=$DD+29 elif [[ $a1 -eq 28 ]];then touch ./ifcfg-$WW-range$CC let y=$n+12 echo "DEVICE=$WW BOOTPROTO=static CLONENUM_START=$DD IPADDR_START=$a3.$n IPADDR_END=$a3.$y PREFIX=28 ONBOOT=yes ARPCHECK=no">>./ifcfg-$WW-range$CC let DD=$DD+13 elif [[ $a1 -eq 29 ]];then touch ./ifcfg-$WW-range$CC let y=$n+4 echo "DEVICE=$WW BOOTPROTO=static CLONENUM_START=$DD IPADDR_START=$a3.$n IPADDR_END=$a3.$y PREFIX=29 ONBOOT=yes ARPCHECK=no">>./ifcfg-$WW-range$CC let DD=$DD+5 fi elif [[ $ZZ -eq 2 ]];then cd /etc/sysconfig/network-scripts/ if [[ $a1 -eq 24 ]];then for ((m=0;m<=252;m=m+1)) do let k=$DD let y=$n+$m echo "IPADDR$k=$a3.$y PREFIX$k=24">>./ifcfg-$WW let DD=$DD+1 done elif [[ $a1 -eq 26 ]]; then for ((m=0;m<=60;m=m+1)) do let k=$DD let y=$n+$m echo "IPADDR$k=$a3.$y PREFIX$k=26">>./ifcfg-$WW let DD=$DD+1 done elif [[ $a1 -eq 27 ]]; then for ((m=0;m<=28;m=m+1)) do let k=$DD let y=$n+$m echo "IPADDR$k=$a3.$y PREFIX$k=27">>./ifcfg-$WW let DD=$DD+1 done elif [[ $a1 -eq 28 ]]; then for ((m=0;m<=12;m=m+1)) do let k=$DD let y=$n+$m echo "IPADDR$k=$a3.$y PREFIX$k=28">>./ifcfg-$WW let DD=$DD+1 done elif [[ $a1 -eq 29 ]]; then for ((m=0;m<=4;m=m+1)) do let k=$DD let y=$n+$m echo "IPADDR$k=$a3.$y PREFIX$k=29">>./ifcfg-$WW let DD=$DD+1 done fi elif [[ $ZZ -eq 3 ]];then if [[ $a1 -eq 24 ]];then for ((m=0;m<=252;m=m+1)) do let k=$DD let y=$n+$m let f=$a4+1 echo "auto $WW:$k iface $WW:$k inet static address $a3.$y netmask 255.255.255.0 gateway $a3.$f ">>/etc/network/interfaces let DD=$DD+1 done elif [[ $a1 -eq 26 ]]; then for ((m=0;m<=60;m=m+1)) do let k=$DD let y=$n+$m let f=$a4+1 echo "auto $WW:$k iface $WW:$k inet static address $a3.$y netmask 255.255.255.192 gateway $a3.$f ">>/etc/network/interfaces let DD=$DD+1 done elif [[ $a1 -eq 27 ]]; then for ((m=0;m<=28;m=m+1)) do let k=$DD let y=$n+$m let f=$a4+1 echo "auto $WW:$k iface $WW:$k inet static address $a3.$y netmask 255.255.255.224 gateway $a3.$f ">>/etc/network/interfaces let DD=$DD+1 done elif [[ $a1 -eq 28 ]]; then for ((m=0;m<=12;m=m+1)) do let k=$DD let y=$n+$m let f=$a4+1 echo "auto $WW:$k iface $WW:$k inet static address $a3.$y netmask 255.255.255.240 gateway $a3.$f ">>/etc/network/interfaces let DD=$DD+1 done elif [[ $a1 -eq 29 ]]; then for ((m=0;m<=4;m=m+1)) do let k=$DD let y=$n+$m let f=$a4+1 echo "auto $WW:$k iface $WW:$k inet static address $a3.$y netmask 255.255.255.248 gateway $a3.$f ">>/etc/network/interfaces let DD=$DD+1 done fi fi done < /ip.txt rm -rf /ip.txt if [[ $ZZ -eq 1 ]];then echo " ********************************************* The ips have been added successfully! Please run service network restart *********************************************" elif [[ $ZZ -eq 2 ]];then echo " ********************************************* The ips have been added successfully! Please run service network restart *********************************************" elif [[ $ZZ -eq 3 ]];then echo " ********************************************* The ips have been added successfully! Please run /etc/init.d/networking restart *********************************************" fi #end
while read 参考
https://www.cnblogs.com/fcing/p/9375117.html
ip批量配置 部分代码拆分
#!/bin/bash touch /ip.txt echo "Please put in the ip ranges: " cat> /ip.txt while read test ; do a1=`echo $test|awk -F'/'+ '{ print $2 }'` a2=`echo $test|awk -F'/'+ '{ print $1 }'` a3=`echo $a2 | awk -F. '{print $1"."$2"."$3}'` a4=`echo ${a2##*.}` echo $a1 echo $a2 echo $a3 echo $a4 done < /ip.txt rm -rf /ip.txt
192.168.1.0/24
192.168.2.0/24
#!/bin/bash read -s -t 10 -n 5 -r -p "输入提示" passwd echo "" echo $passwd
-s 隐藏输入信息
-t 10 #两秒退出
-n 限制长度
-r 允许特殊字符
-p "输入提示"
第二种写法
echo -n "please input: " ; read pass
if条件判断
#!/bin/bash if ls /mnt then echo "it's ok" fi
双分支
#!/bin/bash if grep root /etc/passwd ; then echo "it's ok" else "it's err" fi
多分支
#!/bin/bash read -p "input a user:" tu if grep $tu /etc/passwd ; then echo "the user $tu exists on this system" elif ls -d /home/$tu ; then echo "the user $tu not exists on this system" echo "$tu has a home directory" else echo "the user $tu not exists on this system" echo "$tu not has a direcotry" fi
数值
-eq 等于 [ “$a” -eq “$b” ]
-ne 不等 [ “$a” -ne “$b” ]
-gt 大于 [ “$a” -gt “$b” ]
-ge 大于等于[ “$a” -ge “$b” ]
-lt 小于 [ “$a” -lt “$b” ]
-le 小于等于[ “$a” -le “$b” ]
字符串
== 等于 [ “$a” == “$b” ]
!= 不等 [ “$a” != “$b” ]
-z 字符串 字符串的长度为零 [ -z “$a” ]
-n 字符串 字符串的长度不为空 [ -n “$a” ]
str1 > str2 str1大于str2为真 [ str1 \> str2 ]
str1 < str2 str1小于str2为真 [ str1 \< str2 ]
文件比较
-e 文件名. 文件或目录存在 [ -e file ]
-r 文件名. 文件存在且可读 [ -r file ]
-w 文件名. 文件存在且可写 [ -w file ]
-x 文件名. 文件存在且可执行 [ -x file ]
-s 文件名 文件存在且至少有一个字符 [ -s file ]
-d 文件名. 文件存在且为目录 [ -d file ]
-f 文件名. 文件存在且为普通文件 [ -f file ]
-c 文件名. 文件存在且为字符型文件 [ -c file ]
-b 文件名.. 文件存在且为块特殊文件 [ -b file ]
file1 -nt fle2 检查file1是否比file2新 [ file1 -nt file2 ]
file1 -ot file2 检查file1是否比file2旧 [ file1 -ot file2 ]
* 匹配 0 或多个字符
? 匹配任意一个字符
[list] 匹配 list 中的任意单一字符
[!list] 匹配 除list 中的任意单一字符
[c1-c2] 匹配 c1-c2 中的任意单一字符
{string1,string2,...} 匹配 sring1 或 string2 (或更多)其一字符串
脚本参考
1.
#!/bin/bash if [ $# -ge 1 ] ; then systemctl status $1 > /dev/null if [ $? -eq 0 ] ; then echo "$1 服务正在运行" else systemctl start $1 fi else echo "执行脚本的格式" echo "sh $0 服务名" fi
2.
#!/bin/bash read -p "请输入你的成绩 " cj if [ $cj -ge 0 ] && [ $cj -le 59 ] ;then echo "补考" elif [ $cj -ge 60 ] && [ $cj -le 70 ] ;then echo "良好" elif [ $cj -ge 71 ] && [ $cj -le 85 ] ;then echo "好" elif [ $cj -ge 86 ] && [ $cj -le 100 ] ;then echo "优秀" else echo "成绩的有效范围是0-100之间" fi
3.
#!/bin/bash baknamefile=`date +%Y-%m-%d` bakdir=/mysqlbak user=root password=123 dbname=webdb [ -e $bakdir ] || mkdir $bakdir mysqldump -u$user -p$password --flush-logs $dbname > $bakdir/${baknamefile}-webdb.sql
4.
#!/bin/bash baknamefile=`date +%Y-%m-%d` bakdir=/etcbak srcdir=/etc [ -e $bakdir ] || mkdir $bakdir tar zcvf ${bakdir}/${baknamefile}-etc.tar.gz /etc/ echo "========================" ls -lh ${bakdir}/${baknamefile}-etc.tar.gz echo "back etc is ok!" [root@xuegod63 ~]# chmod +x etcbak.sh [root@xuegod63 ~]# crontab -e 0 3 * * * /root/etcbak.sh 2>&1 > /dev/null

浙公网安备 33010602011771号