shll脚本应用示例

1.数据库备份

执行 db_dump.sh westos( 数据库密码 )

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

#!/bin/bash
if [ ! -e "/var/lib/mysql/mysql.sock" ]
then
         echo "Error: Mysql is not running"
         exit 1
elif [ -z "$1" ]
then
         echo "Error: Please show db password following $0"
         exit 1
fi
mysql -uroot -p$1 -e "show databases;" &> /dev/null
if [ "$?" -ne "0" ]
then
        echo "Error: Wrong password for db!!"
        exit 1
fi
[ -e "/mnt/mysqldump" ]||{
        mkdir -p /mnt/mysqldump
}
All_DB=`mysql -uroot -pwestos  -NE  -e  "SHOW DATABASES;" | sed '/^*/d;/schema$/d'`
 
Action_Choose()
{
                read -p "Please input your action: " ACTION
                case $ACTION in
                        S|s|Skip|skip)
                        ;;
                        B|b|Backup|backup)
                        mv /mnt/mysqldump/${DBNAME}.sql /mnt/mysqldump/${DBNAME}_backup.sql
                        mysqldump -uroot -p$1 $DBNAME > /mnt/mysqldump/${DBNAME}.sql
                        ;;
                        O|o|overwrite|Overwrite)
                        mysqldump -uroot -p$1 $DBNAME > /mnt/mysqldump/${DBNAME}.sql
                        ;;
                        *)
                        echo "Error: Wrong action please input s|o|b|"
                        Action_Choose
                esac

}

for DBNAME in $All_DB
do
        if [ -e "/mnt/mysqldump/${DBNAME}.sql" ]
        then
               echo "$DBNAME's backupfile is exist!!"
                echo "You can choose your action"
                echo "[S]kip [B]ackup [O]verwrite"
                Action_Choose $1

        else
                 mysqldump -uroot -p$1 $DBNAME > /mnt/mysqldump/${DBNAME}.sql
                echo "$DBNAME is backup in /mnt/mysqldump/${DBNAME}.sql"
        fi
done

在这里插入图片描述

2.自动部署论坛

#!/bin/bash
echo "It's installing softwares ..."
yum install php php-mysql mariadb-server httpd expect -y &> /dev/null
echo "Installation is over "

sed '/\[mysql\]/askip-networking=1' /etc/my.cnf -i /etc/my.cnf
systemctl start mariadb httpd
systemctl stop firewalld

echo "configure services..."
mysql_secure_installation  &> /dev/null <<EOF

y
westos
westos
y
y
y
y
EOF

Download()
{
/usr/bin/expect <<-EOF
spawn scp [email protected]:/home/kiosk/Downloads/Discuz_X3.2_SC_UTF8.zip .
expect {
"*password:" { send "westos\r"}
}
expect eof
EOF
}
cd /var/www/html
Download
unzip Discuz_X3.2_SC_UTF8.zip &> /dev/null
chmod 777 /var/www/html/upload -R
firefox http://172.25.60.11/upload

在这里插入图片描述

注意:selinux=premissive
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.自动登陆脚本

#!/bin/bash
Auto_Ssh()
/usr/bin/expect <<EOF
spawn ssh root@$1 hostname
"yes/no" {  send "westos\r" }
}
expect eof
EOF
}
for IP in {1..5}
do
	ping  -c1 -w1 172.25.254.$IP &> /dev/null
	if [ "$?" -eq "0"]
	then
		echo "172.25.254.$IP `Auto_Ssh 172.25.254.$IP | tail -n 1 `"
		fi
done

4.排序问题

方法1:
在这里插入图片描述
方法2:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44889616/article/details/93012117