笔记整理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
View Code
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

 

posted @ 2019-03-10 21:38  夜辰雪扬  阅读(226)  评论(0)    收藏  举报