shll脚本应用示例

博客包含数据库备份、自动部署论坛、自动登陆脚本和排序问题。数据库备份需执行 db_dump.sh 脚本,将所有库备份到指定目录,对已存在文件有不同处理方式;自动部署论坛要注意 selinux 状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 root@172.25.60.16:/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:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值