支行与巡回结构

if语句是事实上生产工作中最主要且最常用的说话,所以,必须领会牢固。

一、case运用

1)使用if、case、read
例子1:
#!/bin/bash
#读取终端输入的字符
read -p “Please input a Number:” n
n1=`echo $n|sed ‘s/[0-9]//g’`

1)使用if、case、read
例子1:
#!/bin/bash
#读取终端输入的字符
read -p “Please input a Number:” n
n1=`echo $n|sed ‘s/[0-9]//g’`

if条件句

*#!/bin/bash
#第1段程序,用case语句完成一个增选语句#
#read -p “请输入一个名字:” i
#case $i in
#redhat)
#   echo “fedora”;;
#fedora)
#   echo “redhat”;;
#\
)
#   echo “Error”;;
#esac

#利用if语句举办判断
if [ ! -z $n1 ]
then
echo “Please input a Number.”
exit 1
elif [ $n -lt 0 ] || [ $n -gt 100 ]
then
echo “The number ranger is 0-100”
exit 1
fi

#运用if语句进行判断
if [ ! -z $n1 ]
then
echo “Please input a Number.”
exit 1
elif [ $n -lt 0 ] || [ $n -gt 100 ]
then
echo “The number ranger is 0-100”
exit 1
fi

if条件句语法

  • 单分支结构

语法

  1. if [
    条件 ]

  2.   then

  3.     指令

  4. fi

  5. if [
    条件 ];then

  6.     指令

  7. fi

标准表明式[ -f “$file1” ]&& echo 1,相当于上边的if语句。

  1. if [
    -f “$file1” ];then

  2.     echo 1

  3. fi

  • 双分层协会
  1. if [
    条件 ]

  2.   then

  3.     指令集1

  4. else

  1.     指令集2

  2. fi

shell流程语句使用介绍,分支与巡回结构。规格表达式[ -f “$file1” ]&& echo 1||echo 0,相当于双分支if [ -f
“$file1” ];then echo 1;else echo 0;fi。

  • 多分支协会
  1. if
    条件

  2.   then

  3.     指令

  4. elif 条件

  5.   then

  6.     指令

  7. elif 条件

  8.   then

  9.     指令

  10.     …

  11.   else

  1.     指令

  2. fi

#第2段程序,用case语句已毕一个下令的三个挑选功效,比if语句不难#
#case $1 in
#-n|–new)
#  touch $2;;
#-e|–edit)
#  vim $2;;
#-c|–cat)
#  cat $2;;
#-r|–remove)
#  rm -rf $2;;
#*)
#  echo “Usage:$0 (-n|-e|-c|-r) 文件名”;;
#esac**

n2=$[$n%2]

n2=$[$n%2]

单分支if条件句

支出shell脚本判断系统剩余内存的大大小小,如果低于100M就邮件报警给管理员,并加入种类定时职务每三分钟实施两回检查。

free -m|awk ‘NR==2{print $4}’

  1. [root@lamp ~]# cat free_m.sh
  1. #!/bin/bash

  2.  

  3. FREE=`free -m|awk ‘NR==3{print $4}’`

  1. if [
    $FREE -lt 100 ]

  2.   then

  3.     echo “warning:The available memory $FREE.”

  1.     exit 0

  2. fi

  3. echo “The
    available memory $FREE.”

二、for运用

#动用case语句进行判断
case $n2 in
0)
echo “偶数”
;;
1)
echo “奇数”
;;
*)
echo “Please input a Number.”
;;
esac

#使用case语句进行判断
case $n2 in
0)
echo “偶数”
;;
1)
echo “奇数”
;;
*)
echo “Please input a Number.”
;;
esac

双多分段if条件句

用if双拨出达成read读入的措施相比五个数的大大小小。

  1. [root@lamp ~]# cat c3.sh

  2. #!/bin/bash

  3. read -p “Pls input two nums: ” num01 num02

  1. [ -z $num01 ]&&{

  2.   echo “the num01 you input must be int.”

  1.   exit 2

  2. }

  3. [ -z $num02 ]&&{

  4.   echo “the num02 you input must be int.”

  1.   exit 2

  2. }

  3. expr $num01 + $num02 + 1
    &>/dev/null

  4. [ $? -ne 0 ]&&{

  5.   echo “the num you input must be int.”

  1.   exit 2

  2. }

  3. if [
    $num01 -lt $num02 ]

  4.   then

  5.     echo “$num01 < $num02.”

  6. elif [ $num01 -gt $num02 ]

  7.   then

  8.     echo “$num01 > $num02.”

  9.   else

  1.     echo “$num01 = $num02.”

  2. fi

用if双分段已毕对nginx或mysql服务是或不是健康开展判定,使用进程数、端口、url的主意判断,假如经过没起,把经过启动。

web服务和数据库(mysql)的监督措施。

1、端口监控

地面监控:netstat、ss、lsof

远程监控:telnet、nmap、nc

telnet监控端口

  1. [root@lamp ~]# echo -e “\n”|telnet www.baidu.com 80|grep
    Connected|wc -l

  2. Connection closed by foreign host.

  1. 1

nmap监控端口

  1. [root@lamp ~]# nmap www.baidu.com -p
    80|grep open|wc -l

  2. 1

nc监控端口

  1. [root@lamp ~]# nc -z 192.168.163.128
    22|grep succeeded|wc -l

  2. 1

2、进度监控

本土监控:ps -ef|grep mysql|wc -l

3、wget、curl,http格局基于再次来到值或者再次来到内容判断。

4、header(http),http方式基于状态码判断。

5、数据库特有通过mysql客户端连接,依照再次来到值或者重回内容判断。

  1. [root@lamp ~]# cat check_db.sh
  1. #!/bin/bash

  2. #local

  3. if [
    “`netstat -lnt|grep 3306|awk -F
    “[ :]+” ‘{print $5}’`”
    = “3306” ]

  4. #if
    [ `ps -ef|grep mysql|grep -v grep|wc -l` -gt 0 ]

  5. #if
    [ `netstat -lntup|grep mysqld|wc -l` -gt 0 ]

  6. #if
    [ `lsof -i tcp:3306|wc -l` -gt 0 ]

  7.  

  8. #remote

  9. #if
    [ `nmap 192.168.1.123 -p 3306 2>/dev/null|grep open|wc -l` -gt 0 ]

  10. #if
    [ `nc -w 2 192.168.1.123 3306 &>/dev/null&&echo ok|grep ok|wc -l` -gt 0 ]

  1.   then

  2.     echo “Mysql is Running.”

  3. else

  1.     echo “Mysql is Stopped.”

  2.     /deta/mysql start

  3. fi

 

  1. [root@lamp ~]# cat check_web.sh
  1. #!/bin/bash

  2. if [
    “`curl -I -s -o /dev/null -w
    “%{http_code}\n”
    ” = “200” ]

  3. #if
    [ `curl -I
    2>/dev/null|head -1|egrep “200|302|301″|wc -l` -eq 1 ]

  1. #curl -s &>/dev/null

  2. #if
    [ $? -eq 0 ]

  3. #if
    [ “`curl -s
    &>/dev/null&&echo $?`” = “0” ]

  4. #if
    [ “`curl -s
    ” = “bbs” ]

  5.   then

  6.     echo “httpd is running.”

  7. else

  1.     echo “httpd is stopped.”

  2. fi

 

经过传参的措施往/etc/user.conf里添加用户,具体要求如下:

1、命令用法:USAGE:sh adduser {-add|-del|-search} username

2、传参须求:即使参数为-add,表示添加前边接的用户名;即便参数为-del,表示删除后边接的用户名;假使参数为-search,表示查找前面接的用户名。

3、要是有同名的用户则不可能添加,没有相应用户则无需删除,查找到用户以及没有用户时交由明确提醒。

4、/etc/user.conf无法被有着外部用户之间删除或涂改。

  1. [root@lamp ~]# cat user.sh

  2. #!/bin/bash

  3. ROOT_UID=0

  4.  

  5. if [
    “$UID” -ne “$ROOT_UID” ]

  6.   then

  7.     echo “Mast be root to run this script.”

  1.     exit 1

  2. fi

  3. if [
    $# -ne 2 ]

  4.   then

  5.     echo “USAGE:sh $0 {-add|-del|-search}
    username.”

  6.     exit 2

  7. fi

  8. check=$1

  9. name=$2

  10. if [
    “$check” = “add” ]

  11.   then

  12.     result=`cat /etc/user.conf|grep
    -Fx “$name”`

  13.     [ -z $result ]&&{

  14.       echo “$name” >> /etc/user.conf

  15.       echo “user add “$name” is ok.”

  16.       exit 0

  17.     }

  18.     echo “user $name is in.”

  19.     exit 0

  20. elif [ “$check” = “del” ]

  21.   then

  22.     result=`cat /etc/user.conf|grep
    -Fx “$name”`

  23.     [ -z $result ]&&{

  24.       echo “user “$name” not find.”

  25.       exit 0

  26.     }

  27.     sed -ri /^$name$/d /etc/user.conf

  1.     echo “user del “$name” is ok.”

  2. elif [ “$check” = “search” ]

  3.   then

  4.     result=`cat /etc/user.conf|grep
    -Fx “$name”`

  5.     [ -z $result ]&&{

  6.       echo “user $name not find.”

  7.       exit 0

  8.     }

  9.     echo $result

  10.     exit 0

  11. else

  1.     echo “USAGE:sh $0 {-add|-del|-search}
    username.”

  2.     exit 1

  3. fi

 

获取文件md5值,防篡改。

  1. [root@lamp ~]# find ./ -type f|xargs
    md5sum

将md5值写入文件。

  1. [root@lamp ~]# find ./ -type f|xargs
    md5sum >/tmp/md5list

比较md5值。

  1. [root@lamp ~]# md5list -c
    /tmp/md5list  

**#!/bin/bash
#for i in 1 aa c 88
#do
#   echo $i
#done

例子2:
#!/bin/bash
read -p “please input a digit:” n
#n2=`echo $n|grep -c ‘[^0-9]’`
#n1=$[$n%2]

例子2:
#!/bin/bash
read -p “please input a digit:” n
#n2=`echo $n|grep -c ‘[^0-9]’`
#n1=$[$n%2]

for i in `cat /opt/user.txt`
do
   useradd user$i 2>/opt/userfalse.log
done**

#if [ $n2 -eq 1 ]
if echo $n | grep -q ‘[^0-9]’
then
echo “你输入的不是数字,请重新输入”
exit 1
fi

#if [ $n2 -eq 1 ]
if echo $n | grep -q ‘[^0-9]’
then
echo “你输入的不是数字,请重新输入”
exit 1
fi

**三、while运用**

n1=$[$n%2]

n1=$[$n%2]

 

if [ $n1 -eq 0 ]
#if(($n1==0))
then
echo “输入的是偶数”
else
echo “输入的是基数”
fi

if [ $n1 -eq 0 ]
#if(($n1==0))
then
echo “输入的是偶数”
else
echo “输入的是基数”
fi

#!/bin/bash
i=1
while [ $i
-le 5 ]

do
  echo
“请等待…”

#  let
i++

  
i=i++

done

例子3:
#!/bin/bash
a=1
if [ $a == 2 ]
then
echo “true”
elif [ $a -lt 10 ]
then
echo “no false”
else
echo “false”
fi

例子3:
#!/bin/bash
a=1
if [ $a == 2 ]
then
echo “true”
elif [ $a -lt 10 ]
then
echo “no false”
else
echo “false”
fi

**四、猜数字**

例子4:
#!/bin/bash

例子4:
#!/bin/bash

#!/bin/bash

FILES=$*
if [ -z $* ];
then
echo -e “\033[32m{usage:$0 /boot|/tmp|/tmp/test.txt}\033[0m”
exit
fi

FILES=$*
if [ -z $* ];
then
echo -e “\033[32m{usage:$0 /boot|/tmp|/tmp/test.txt}\033[0m”
exit
fi


“上面的那段代码有BUG,如果尚未输入数值,会报错”

#x=$[RANDOM%10]
#read -p
“10 以内数字请猜一猜:” cai

#
#   if [
$cai -gt $x ];then

#      
echo “对不起,你猜大了,正确答案是:$x”

#   elif
[ $cai -lt $x ];then

#      
echo “对不起,你猜小了,正确答案是:$x”

#   else
#      
echo “恭喜你,猜对了,正确答案就是:$x”

#  
fi

for i in `echo 192.168.204.129 127.0.0.1`
do

for i in `echo 192.168.204.129 127.0.0.1`
do


“不猜到正确不鸣金收兵,突显猜的次数”

#x=$[RANDOM%10]
#i=0
#while
:

#do
#  read -p
“10 以内的数字猜一猜:” cai

#  let i++
 

#    if [
$cai -gt $x ];then

#       
echo “对不起,你猜大了”

#    elif
[ $cai -lt $x ];then

#       
echo “对不起,你猜小了”

#    else
#       
echo “恭喜您,猜对了,正确答案就是:$x ,你一共猜了$i
次”

#       
exit

#   
fi

#done

scp -r $FILES root@$i:/root/install

scp -r $FILES root@$i:/root/install


“上面再来一段升级代码解决BUG”

x=$[RANDOM%10]
i=0
while
:

do
  read -p
“10 以内的数字猜一猜:” cai

  let i++
 

    if [
$cai -gt $x ];then

       
echo “对不起,你猜大了”

    elif [
$cai -lt $x ];then

       
echo “对不起,你猜小了”

    else
       
echo “恭喜您,猜对了,正确答案就是:$x ,你一共猜了$i
次”

       
exit

   
fi

done

done

done

**五、端口状态**

2)使用date
#!/bin/bash
d=`date +%F`
exec >$d.log 2>&1
echo “Begin at `date`”
ls /learing
cd /log
ls /root >root.log
echo “End at `date`”

2)使用date
#!/bin/bash
d=`date +%F`
exec >$d.log 2>&1
echo “Begin at `date`”
ls /learing
cd /log
ls /root >root.log
echo “End at `date`”

#!/bin/bash
#     rpm -q httpd 
&> /dev/null

#
#    if [ ! $? -eq 0
];then

#         yum -y
install httpd   &> /dev/null

#    fi
#
#        # systemctl
status httpd  &> /dev/null

#          netstat
-antpu |grep 80

#    if [ ! $? -eq 0
];then

#          systemctl
restart httpd  

#    fi

3)使用for
例子1:
!/bin/bash
sum=0
#打印1到100相加后的总额
for i in `seq 1 100`
do
sum=$[$sum+$i]
echo $i
done;
echo $sum

3)使用for
例子1:
!/bin/bash
sum=0
#打印1到100相加后的总数
for i in `seq 1 100`
do
sum=$[$sum+$i]
echo $i
done;
echo $sum

     rpm -q httpd  &>
/dev/null

    if [ ! $? -eq 0
];then

     yum -y install
httpd   &> /dev/null

    fi
        # systemctl
status httpd  &> /dev/null

         netstat -antpu
|grep 80

    if [ ! $? -eq 0
];then

           systemctl
restart httpd

          if [ $? == 0
];then

           echo
“重启成功”

          fi
    fi

 

 

**六、非交互发邮件**

例子2:
!/bin/bash
for f in `ls /etc/`
do
if [ -d /etc/$f ]
then
ls -d /etc/$f
#echo “/etc/$f”
fi
done;

例子2:
!/bin/bash
for f in `ls /etc/`
do
if [ -d /etc/$f ]
then
ls -d /etc/$f
#echo “/etc/$f”
fi
done;

#!/bin/bash
mail -s “hello” root
<< EOF

first
second
third

tenth
EOF

例子3:
#!/bin/bash
n=`wc -l passwd |awk ‘{print $1}’`
for i in `seq 1 $n`;
do
sed -n “$i”p passwd;
done

例子3:
#!/bin/bash
n=`wc -l passwd |awk ‘{print $1}’`
for i in `seq 1 $n`;
do
sed -n “$i”p passwd;
done

**七、函数**

例子4:
#!/bin/bash

例子4:
#!/bin/bash

#!/bin/bash
cecho(){
   echo -e
“\033[$1m$2\033[0m”

}

#while read line
for i in `cat ip.txt`
do
echo -e “\033[32m scp -r /root/learing/t8.sh root@$i:/tmp \033[0m”
done

#while read line
for i in `cat ip.txt`
do
echo -e “\033[32m scp -r /root/learing/t8.sh root@$i:/tmp \033[0m”
done

cecho 32
OK

cecho 33
OK

cecho 34
Error

cecho 35
Hehe

**八、录入IP**

例子5:
#!/bin/bash
pfile=`find . -name “*.sh”|tail -2`
for i in `$pfile`
do
tar -czvf 2016-07-22.tar.gz $i
done

例子5:
#!/bin/bash
pfile=`find . -name “*.sh”|tail -2`
for i in `$pfile`
do
tar -czvf 2016-07-22.tar.gz $i
done

#!/bin/bash
i=1
while
:

do
  read -p
“请输入over甘休或者输入你要录入的IP:” ip

  [ $ip ==
over ] && break

 
x[$i]=$ip

  echo $ip
>> /opt/temp/ip.log

  let
i++

done
#echo
${x[@]}

echo
${x[*]}

例子6:
#!/bin/bash
j=0
for((i=1;i<=100;i++))
do
j=$[$i + $j]
done
echo $j

例子6:
#!/bin/bash
j=0
for((i=1;i<=100;i++))
do
j=$[$i + $j]
done
echo $j

**九、录数总结**

4)使用while
例子1:
#!/bin/bash
i=0
#while [ $i -lt 5 ]
while [[ $i<5 ]]
do
echo “$i”
((i++))
done

4)使用while
例子1:
#!/bin/bash
i=0
#while [ $i -lt 5 ]
while [[ $i<5 ]]
do
echo “$i”
((i++))
done

#!/bin/bash
sum=0
while
:

do
  read -p
“请输入数字:” num

  [ $num
-eq 0 ] && break

#  let sum
+=`$num`

 
sum=$[sum+num]

done
echo
“你输入的数字总和为:$sum”

例子2:
#!/bin/bash
while :
do
read -p “请输入:” n
if [ -z $n ]
then
echo “需求输入内容:”
continue
fi

例子2:
#!/bin/bash
while :
do
read -p “请输入:” n
if [ -z $n ]
then
echo “必要输入内容:”
continue
fi

**十、排序**

n1=`echo $n|sed ‘s/[0-9]//g’`

n1=`echo $n|sed ‘s/[0-9]//g’`

#!/bin/bash
read -p
“请输入第三个整数:” num1

read -p
“请输入第三个整数:” num2

read -p
“请输入第二个整数:” num3

if [ ! -z $n1 ]
then
echo “需求输入数字:”
continue
fi

if [ ! -z $n1 ]
then
echo “需求输入数字:”
continue
fi

#率先种办法:
#先定出num3为最大值,再定出num1、num2的高低
#if [ $num1 -gt $num3
];then

#    
t=$num3

#    
num3=$num1

#    
num1=$t

#fi
#if [ $num2 -gt $num3
];then

#    
t=$num3

#    
num3=$num2

#    
num2=$t

#fi
#if [ $num1 -gt $num2
];then

#    
t=$num2

#    
num2=$num1

#    
num1=$t

#fi
#echo
“$num1,$num2,$num3”

break
done
echo $n

break
done
echo $n

#第两种艺术:
#师资的主意,先定num1为最小值,然后相比较num2、num3的尺寸
#if [ $num1 -gt $num2
];then

#tmp=$num1
#num1=$num2
#num2=$tmp
#fi
#if [ $num1 -gt $num3
];then

#tmp=$num1
#num1=$num3
#num3=$tmp
#fi
#if [ $num2 -gt $num3
];then

#tmp=$num2
#num2=$num3
#num3=$tmp
#fi
#echo
“排序为:$num1,$num2,$num3”

例子3:
#!/bin/bash
while :
do
load=`w|head -1|awk -F ‘load average: ‘ ‘{print $2}’|cut -d’.’ -f1`
if [ $load -gt 10 ]
then
top|mail -s “load is high:$load” load@163.com
fi
sleep 30
done

例子3:
#!/bin/bash
while :
do
load=`w|head -1|awk -F ‘load average: ‘ ‘{print $2}’|cut -d’.’ -f1`
if [ $load -gt 10 ]
then
top|mail -s “load is high:$load” load@163.com
fi
sleep 30
done

#其三种形式:
#和谐的格局,先3、2相比较:大数下沉小数上浮;然后2、1比较:大数下沉小数上浮;最后3、2相比较:大数下沉小数上浮,最后确定1、2、3八个数的相继
#if [ $num3 -lt $num2
];then

#    
t=$num2

#    
num2=$num3

#    
num3=$t

#fi
#if [ $num2 -lt $num1
];then

#    
t=$num1

#    
num1=$num2

#    
num2=$t

#fi
#if [ $num3 -lt $num2
];then

#    
t=$num2

#    
num2=$num3

#    
num3=$t

#fi
#echo
“排序为:$num1,$num2,$num3”

例子4:
#!/bin/bash
while read line
do
echo -e “\033[32m scp -r /root/learing/t8.sh root@$line:/tmp
\033[0m”
done < ip.txt

例子4:
#!/bin/bash
while read line
do
echo -e “\033[32m scp -r /root/learing/t8.sh root@$line:/tmp
\033[0m”
done < ip.txt

#第多样办法:
#和地点的第三种沉思一致
#if [ $num2 -lt $num1
];then

#   t=$num1
#  
num1=$num2

#   num2=$t
#fi
#if [ $num3 -lt $num2
];then

#   t=$num2
#  
num2=$num3

#   num3=$t
#fi
#if [ $num2 -lt $num1
];then

#   t=$num1
#  
num1=$num2

#   num2=$t
#fi
#echo
“排序为:$num1,$num2,$num3

例子5:
#!/bin/bash
while read line
do
echo $line
done </etc/hosts

例子5:
#!/bin/bash
while read line
do
echo $line
done </etc/hosts

**十一、批量转移文件名**

5)调用自定义函数
#!/bin/bash
ipaddress()
{
ifconfig |grep -A1 “$1″|tail -1|awk ‘{print $2}’|awk -F ‘:’ ‘{print
$2}’
}

5)调用自定义函数
#!/bin/bash
ipaddress()
{
ifconfig |grep -A1 “$1″|tail -1|awk ‘{print $2}’|awk -F ‘:’ ‘{print
$2}’
}

#!/bin/bash
touch
/opt/temp/{a,b,c,d,e,f}.txt

for i in `ls
/opt/temp/*.txt`

do
  mv $i ${i%.*}.doc 
#那里多少个变量i前面不可以用相对路径,为啥?

done

read -p “请输入网卡名字:” ipname
myip=`ipaddress $ipname`
echo “$ipname address is $myip”

read -p “请输入网卡名字:” ipname
myip=`ipaddress $ipname`
echo “$ipname address is $myip”

**十二、ping命令**

6)使用七个指令
例子1:

6)使用八个指令
例子1:

#!/bin/bash
read -p
“请输入ip地址:” ip

ping -c2
-i0.1 -W1 $ip   &> /dev/null

#ping
-c2    ip  表示ping2次这么些ip,c和2中间可以有空格

#ping
-i0.1  ip  表示ping这些ip的间隔时间0.1秒

#ping
-W1    ip  表示ping这几个ip的晚点时间1秒

if [ $? ==
0 ];then

  echo “$ip
成功ping通”

else
  echo “$ip
未能ping通”

fi

#!/bin/bash

#!/bin/bash

**十三、取6为擅自密码**

DATE=`date`
echo “DATE is ${DATE}”

DATE=`date`
echo “DATE is ${DATE}”

#!/bin/bash
X=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
pass=”
for i in
{1..6}

do
 
n=$[RANDOM%62]   
#26小写字母+26大写字母+10个数字=62

 
tmp=${X:$n:1}

 
pass=${pass}$tmp

done
echo
$pass

USERS=`who |wc -l`
echo “LOGIN in user is ${USERS}”

USERS=`who |wc -l`
echo “LOGIN in user is ${USERS}”

**十四、数列求和**

UP=`date;uptime`
echo “Uptime is ${UP}”

UP=`date;uptime`
echo “Uptime is ${UP}”

#!/bin/bash
read -p
“请输入一个正整数:” n

#n=${n:-100}
#sum=0
#for i in
`seq $n`

#do
#  # let
sum=($sum+$i)

#  # 
sum=$[$sum+$i]

#  
sum=$[sum+i]

#done
#echo
“从1到$n 的总额是:”$sum

例子2:

例子2:

n=${n:-100}
i=1;sum=0
while [ $i
-le $n ]

do
   let
sum+=i

   let
i++

done
echo
“从1到$n 的总数是:”$sum

#!/bin/bash
#机械台数
machineNum=`ifconfig |grep -n ‘^[a-zA-Z0-9]’|wc -l`

#!/bin/bash
#机器台数
machineNum=`ifconfig |grep -n ‘^[a-zA-Z0-9]’|wc -l`

**十五、添加用户**

#赢得机器的机械名所在行和机器名
machineName=`ifconfig |grep -n ‘Link encap’|awk -F’ ‘ ‘{print $1}’|awk
-F’:’ ‘{print $2}’`

#收获机器的机械名所在行和机器名
machineName=`ifconfig |grep -n ‘Link encap’|awk -F’ ‘ ‘{print $1}’|awk
-F’:’ ‘{print $2}’`

#!/bin/bash
#第一段是相似添加用户
#read -p
“请输入用户名:” user

#[ -z
$user ] && echo “请输入正确的用户名” && exit

#read -p
“请输入密码:” pass

#[ -z
$pass ] && echo “请输入正确的密码” && exit

#useradd
$user

#echo
$pass |passwd –stdin $user

#获取机器的机器名对应的IP地址
machineIP=`ifconfig |grep -n ‘inet addr’|awk -F’:’ ‘{print $3}’|awk -F’
‘ ‘{print $1}’`

#得到机器的机器名对应的IP地址
machineIP=`ifconfig |grep -n ‘inet addr’|awk -F’:’ ‘{print $3}’|awk -F’
‘ ‘{print $1}’`

#第二段是充裕用户时从没输入密码。会默许给个默密码
#read -p
“请输入用户名:” user

#read -p
“请输入密码:” pass

#[ -z
$user ] && exit

#pass=${pass:-123456}

for num in `seq 1 $machineNum`;
do
#`echo “$machineName”|sed -n ‘$num’ p”`
n=`echo “$machineName”|sed -n “$num”p`
m=`echo “$machineIP”|sed -n “$num”p`
echo “机器$num:$n的IP地址是:$m”;
done

for num in `seq 1 $machineNum`;
do
#`echo “$machineName”|sed -n ‘$num’ p”`
n=`echo “$machineName”|sed -n “$num”p`
m=`echo “$machineIP”|sed -n “$num”p`
echo “机器$num:$n的IP地址是:$m”;
done

#useradd
$user

#echo
$pass |passwd –stdin $user

**十六、超用户报警**

7)读取文件内容
#!/bin/bash
for ip in `cat ip.txt`
do
echo $ip
./rsync.expect $ip ip.txt
done

7)读取文件内容
#!/bin/bash
for ip in `cat ip.txt`
do
echo $ip
澳门金沙国际 ,./rsync.expect $ip ip.txt
done

#!/bin/bash
x=`who | wc
-l`

[ x > 2 ] && echo
“有人入侵电脑啊!!!”|mail -s ‘overuser’ root

#crontab -e -u root
/opt/jiaoben/useralert 可以用这么些周期安插职责监控

**十七、远程非交互**

#!/bin/bash
rm -rf
/root/.ssh/known_hosts    
#拥有曾经三番五次过的主机存储为那些地方,删掉后会>提醒未连接过的主机,要不要持续远程登录

expect
<< EOF

spawn ssh
172.25.0.10    

expect
“continue” {send “yes\n”}

expect
“password” {send “redhat\n”}

expect
“#”      {send “touch /a.txt\n”}

expect
“#”      {send “exit\n”}

EOF

#spawn代表将交互式的倒车为非交互,expect表示期待出现一个值后,发送什么命令

**十八、中断**

#!/bin/bash
for i in
{1..5}

do
   [ $i
-eq 3 ] && continue

   echo
$i

done
echo
OK

#for i in
{1..5}

#do
#   [ $i
-eq 3 ] && break

#   echo
$i

#done
#echo
OK

#for i in
{1..5}

#do
#   [ $i
-eq 3 ] && exit

#   echo
$i

#done
#echo
OK

**二十、自动划分分区(待完善)**

#!/bin/bash
read -p
“请输入你要分开的分区个数(默许每个分区500M):” i

for $i in
`seq $[i-1]`

do
    fdisk
/dev/vdb << EOF

n
p
$[i+1]

+500M
w
EOF
done

####急需完善!!!!!#########

 

相关文章