简单脚本3

不显示4的两种实现方法

[root@136 mnt]# cat no4.sh 
#!/bin/bash
for ((i=1;i<=10;i++))
do
    while [ ! "$i" -eq "4" ]
    do
    echo $i
    break
    done
done


[root@136 mnt]# cat test.sh 
#!/bin/bash
for NUM  in {1..10}
do
    while "$NUM" = "4"
    do continue 4
    echo $NUM
    done
done

查看文件属性

[root@136 mnt]# cat check_file.sh 
#!/bin/bash
Check_file()
{
    if
    [ "$1" "$2" ]
    then
    echo "$2" is $3
    exit 0
    fi
}

if
[ "$#" -ne "1" ]
then
    echo "please input a file follow script!!"
elif
[ ! -e "$1" ]
then
    echo "$1 is not exit !!"
else
    Check_file -L $1 link
    Check_file -f $1 "common file"
    Check_file -S $1 socket
    Check_file -b $1 block
    Check_file -c $1 character
    Check_file -d $1 directory
fi

脚本实现ssh其他主机

[root@136 mnt]# cat ip.exp 
#!/usr/bin/expect
set timeout 5
set IP   [ lindex $argv 0 ]
set PASS [ lindex $argv 1 ]
spawn ssh root@$IP
expect {
    "yes/no" { send "yes\r";exp_continue }
    "password" { send "$PASS\r" }
}
interact

脚本实现连接其他主机并建立不存在的用户,若存在,提示

[root@136 mnt]# cat useradd_create.sh 
#!/bin/bash
Auto_Connect()
{
/usr/bin/expect <<EOF |grep -E "authenticity|ECDSA|connecting|Warning|spawn|password" -v
set timeout 5
spawn ssh root@172.25.254.$NUM "$1"
expect{
        "yes/no" { send "yes\r";exp_continue }
        "password:" { send "westos\r" }
}
expect eof
EOF
}




for NUM in  35
do
    ping -c1 -w1 172.25.254.$NUM &> /dev/null &&{
    MAX_LINE=`awk 'BEGIN{N=0}{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时覆盖源文件。

[root@136 mnt]# cat db_dump.sh
#!/bin/bash
DATABASE=`mysql -uroot -EN -e "show databases;" | grep -E "^\*|schema$" -v`
mkdir -p /mnt/mysqldump
for DATABASE_NAME in $DATABASE
do
    [ ! -e "/mnt/mysqldump/${DATABASE_NAME}.sql" ]&&{
    mysqldump -uroot $DATABASE_NAME > /mnt/mysqldump/${DATABASE_NAME}.sql
    echo -e "\033[32m${DATABASE_NAME}.sql is backup!!\033[0m"
    }||{
    read -p "
    [S]kip [B]ackup [O]verwrite
    Please input action: " ACTION
    ACTION=`echo $ACTION|tr 'A-Z' 'a-z'`
    case $ACTION in
        s)
        ;;
        b)
        mysqldump -uroot $DATABASE_NAME > /mnt/mysqldump/${DATABASE_NAME}_backup.sql
        echo -e "\033[34m${DATABASE_NAME}_backup.sql is backup!!\033[0m"
        ;;
        o)
        mysqldump -uroot $DATABASE_NAME > /mnt/mysqldump/${DATABASE_NAME}.sql
        echo -e "\033[31m${DATABASE_NAME}.sql is overwrite!!\033[0m"
        ;;
        exit)
        echo -e "\033[37mbye\033[0m"
        exit 0
        ;;
        *)
        echo error
    esac
    }
done

执行 ./auto_ssh.sh 172.25.254.63 westos 172.25.254.63 为IP westos 为密码 执行脚本后,自动登陆 172.25.254.63,并保持登陆


[root@136 mnt]# cat auto_ssh.sh 
#!/bin/bash
/usr/bin/expect << EOF
spawn ssh root@$1
expect {
    "yes/no" { send "yes\r";exp_continue }
    "password" { send "$2\r" }
}
interact
EOF
[root@136 mnt]# chmod +x /mnt/auto_ssh.sh 
[root@136 mnt]# ./auto_ssh.sh 172.25.254.63 westos
spawn ssh root@172.25.254.63
root@172.25.254.63's password: [root@136 mnt]#

检测同一局域网下开启的所有主机,并抓取所有主机的主机名称和IP的对应列表,把列表保存在/mnt/ip_host.list文件中

[root@136 mnt]# cat host.sh 
#!/bin/bash
Auto_Connect()
{
/usr/bin/expect << EOF
set timeout 5
spawn ssh root@172.25.254.$IP_NUM hostname
expect {
    "yes/no" { send "yes\r";exp_continue }
    "password:" { send "westos\r" }
}
expect eof
EOF
}
for IP_NUM in {45..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

服务自动部署示例 脚本要求: 执行脚本 lamp.sh 脚本执行后部署好论坛,并设定 apache 的网络接口为 8080 真机中执行脚本

#!/bin/bash
Auto_Discuz()
{
/usr/bin/expect << EOF
set timeout 30
spawn ssh root@$1
expect {
    "yes/no" { send "yes\r";exp_continue }
    "password:" { send "westos\r" }
}
expect "]#" { send "yum install httpd -y\r" }
expect "]#" { send "yum install mariadb-server -y\r"}
expect "]#" { send "yum install php-mysql.x86_64 -y\r"}
expect "]#" { send "systemctl start httpd\r" }
expect "]#" { send "systemctl start mariadb\r" }
expect eof
EOF
}
Auto_Connect()
{
/usr/bin/expect << EOF
set timeout 30
spawn ssh root@$1
expect {
    "yes/no" { send "yes\r";exp_continue }
    "password:" { send "westos\r" }
}
expect "]#" { send "cd /var/www/html/\r" }
expect "]#" { send "unzip /var/www/html/Discuz_X3.2_SC_UTF8.zip >> /dev/null \r" }
expect "]#" { send "chmod 777 /var/www/html/upload/ -R\r" }
expect "]#" { send "systemctl restart httpd\r" }
expect eof
EOF
}
Auto_Httpd()
{
/usr/bin/expect << EOF
set timeout 30
spawn ssh root@$1
expect {
    "yes/no" { send "yes\r";exp_continue }
    "password:" { send "westos\r" }
}
expect "]#" { send "sed "/^Listen/cListen 8080" -i /etc/httpd/conf/httpd.conf\r" }
expect "]#" { send "yum restart httpd -y\r" }
expect eof
EOF
}
yum install expect -y
Auto_Discuz $1
scp /home/kiosk/Downloads/Discuz_X3.2_SC_UTF8.zip root@$1:/var/www/html
Auto_Connect $1
firefox -new-tab $1/upload/install
Auto_Httpd $1

猜你喜欢

转载自blog.csdn.net/awoyaoc/article/details/80862716