基于liunx下的shell脚本练习

一、shell 脚本(自动连接并显示ip为172.25.254.5到172.25.254.9的主机名)
#!/bin/bash
Auto_connect()
{
/usr/bin/expect <<EOF
set timeout 10
spawn ssh [email protected].$IP_NUM  hostname
expect {
        "yes/no" { send  "yes\r";exp_continue }
    "password:" { send "westos\r" }
}
expect eof
EOF
}
for IP_NUM in {5..9}
do
       ping  -c1 -w1 172.25.254.$IP_NUM &> /dev/null  &&{
      Host_Name=` Auto_connect|grep -E "authenticity|fingerprint|connecting|password|spawn|Warning" -v `
        }

       echo  $Host_Name 172.25.254.$IP_NUM | sed 's/\r//g'

done


二、shell脚本(数字从一到十,不显示数字四)
#!/bin/bash
for NUM in {1..10}
do
       while [ ! "$NUM" -eq "4" ]
       do
       echo $NUM
       break
       done

done


三、shell脚本(十秒倒计时
#!/bin/bash
for ((i=10;i>=0;i--))
do
     echo -n "  after $i's is end  "
     echo  -ne "\r  \r"
     sleep 1

done


四、shell脚本(一分十妙倒计时)
#!/bin/bash
read -p "please input minute:" m
read -p "please input second:" s
i=$[m*60+s]
for((p=$i;p>0:p--))
do
   A=$[$p/60]
   B=$[$p%60]
   echo  -ne  "\r$A:$B      \r"
   sleep  1

done


五、shell脚本(一分十秒倒计时
#!/bin/bash
PRINT_MESSAGE()
{
     echo -n "$MIN:$SEC "
     sleep 1
     echo  -ne  "\r   \r"
}
MIN=1
SEC=10
for ((;SEC>=0;SEC--))
do
    [ "$SEC" = "0" -a "$MIN" = "0" ]&& exit 0
    [ "$SEC" = "0" -a "$MIN" -gt "0" ]&&{
     PRINT_MESSAGE
     ((MIN--))
      SEC=60
     }
    PRINT_MESSAGE

done


扫描二维码关注公众号,回复: 2259579 查看本文章

六、shell脚本(计算器)

#!/bin/bash
read -p "please input the first number:" A
read -p "please input the calculator :" B
read -p "please input the second number:" C
bc  <<EOF
$A $B $C

EOF



七、shell脚本:执行自己的电脑在别人的电脑上若用户不存在建立用户
#!/bin/bash
Auto_Connect()
{
/usr/bin/expect <<EOF |grep -E "authenticity|ECDSA|connecting|Warning|spawn|password" -v
set timeout 5
spawn ssh [email protected].$NUM "$1"
expect {
        "yes/no" {send "yes\r";exp_continue }
        "password:" { send "westos\r"}
}
expect eof
EOF
}
for NUM in 13
do
    ping -c1 -w1 172.25.254.$NUM &>/dev/null &&{
    Max_Line=`awk 'BEGIN{N++}END{print N}' $1`
    for Line_Num in `seq 1 $Max_Line`
    do
          USERNAME=`sed -n ${Line_Num}p $1`
          PASSWORD=`sed -n ${Line_Num}p $2`
          User_Check=`Auto_Connect "useradd $USERNAME"`
          [ -n "$User_Check" ]&&{
           echo  $User_Check
          }||{
          Auto_Connect "echo $PASSWORD | passwd --stdin $USERNAME"
          }
     done
}||    echo 172.25.254.$NUM is down

done


八、shell脚本:数据库备份

执行脚本会备份数据库中的所有库到/mnt/mysqldump目录中,备份文件名称为“库名称.sql“当此文件存在时报错并询问动作,输入s跳过备份,当输入b时备份“库名称.sql”文件为“库名称_backup.sql",当输入o时覆盖源文件。

#!/bin/bash

DATABASE=`mysql -uroot -pwestos -EN -e "show databases;"|grep -E "^\*|schema$" -v`
mkdir -p /mnt/mysqldump
for DATABASE in $DATABASE
do
    if [ -e /mnt/mysqldump/${DATABASE}.sql ]
    then
        read -p "$DATABASE has been dumped!
        [S]kip [B]ackup [O]verwrite
        Please input action: " ACT
    case $ACT in
        S)
        ;;
        B)
        mysqldump -uroot -pwestos $DATABASE > /mnt/mysqldump/${DATABASE}_backup.sql
        ;;
        O)    
                mysqldump -uroot -pwestos $DATABASE > /mnt/mysqldump/${DATABASE}.sql
        ;;
    esac
    else
        mysqldump -uroot -pwestos $DATABASE > /mnt/mysqldump/${DATABASE}.sql
    echo $DATABASE is backuped!
    fi

done


九、服务自动部署示例

设定apache网络端口为8080

#!/bin/bash
yum install httpd.x86_64 -y &> /dev/null;
sed -i "/^Listen/cListen 8080" /etc/httpd/conf/httpd.conf;
echo -e "\033[32mthe listen is changed;\033[0m"
sed -ne '42p'  /etc/httpd/conf/httpd.conf

systemctl restart httpd



十、自动登陆脚本:

执行auto_ssh.sh   172.25.254.100 westos,自动登陆,并保持登陆

#!/bin/bash
/usr/bin/expect <<EOF
set timeout 10
spawn ssh root@$1
expect {
        "yes/no" { send  "yes\r";exp_continue }
    "password:" { send "$2\r" }
}
expect interact

EOF


十一、批处理脚本:

检测教室中开启的主机,并获取所有主机名称和ip的对应列表,并保存在/mnt/ip_host.list中

#!/bin/bash
Auto_connect()
{
/usr/bin/expect <<EOF
set timeout 10
spawn ssh [email protected].$IP_NUM  hostname
expect {
        "yes/no" { send  "yes\r";exp_continue }
    "password:" { send "westos\r" }
}
expect eof
EOF
}
for IP_NUM in {1..50}
do
       ping  -c1 -w1 172.25.254.$IP_NUM &> /dev/null  &&{
      Host_Name=` Auto_connect|grep -E "authenticity|fingerprint|connecting|password|spawn|Warning" -v `
        }

       echo  $Host_Name 172.25.254.$IP_NUM | sed 's/\r//g' >>/mnt/ip_host.list

done


猜你喜欢

转载自blog.csdn.net/xdmaidou/article/details/80837116
今日推荐