之前的Shell章节介绍了那么多shell的基础知识,那么今天就来操练以下吧!
示例应用一:
用户建立脚本
执行user_create.sh userlist passlist
建立userlist列表中的用户,设定userlist列表中的密码为passlist列表中的密码
当脚本后面跟的文件个数不足两个时报错;
当文件不存在时报错;
当用户存在时报错;
#!/bin/bash
#判定脚本后的文件个数是否为两个
[ "$#" -lt 2 ] && {
echo "Error:please input userlist and following passlist!!"
exit 0
}
#判断脚本后跟的两个脚本是否存在
[ ! -e "$1" ] && {
echo "Error:$1 is not exist!!"
exit 0
}
[ ! -e "$2" ] && {
echo "Error:$2 is not exist!!"
exit 0
}
##判断用户和密码是否对应一致
User_Line=$(sed '/^$/d' $1 | sed -n '$=' )
Pass_Line=$(sed '/^$/d' $2 | sed -n '$=' )
[ "$User_Line" -ne "$Pass_Line" ] && {
echo "Error:users is different from passwd!!"
exit 0
}
for num in $( seq 1 "$User_Line" ) #从文件中取出用户和对应的密码
do
USER=$(sed -n ${num}p $1)
PASSWD=$(sed -n ${num}p $2)
id $USER && {
echo "$USER is exist!!"
}||{
useradd $USER
echo $PASSWD |passwd --stdin $USER
echo "$USER is create sucessfully!!"
}
done
2.数据库备份
执行db_dump.sh westos
脚本执行后会备份数据库中的所有库到/mnt/mysqldump目录中
备份文件名称为“库名称.sql” 当此文件存在时报错并询问动作
S:跳过备份;
B:备份“库名称.sql”文件为“库名称_backup.sql”
O:覆盖源文件
#!/bin/bash
if [ ! -e "/var/lib/mysql/mysql.sock" ]
then
echo "Mysql is not running!!"
exit 1
fi
if [ -z "$1" ]
then
echo "please input passwd for Mysql following $0!!"
exit 3
fi
mysql -uroot -p$1 -e "SHOW DATABASES;" &> /dev/null
if [ ! "$?" = "0" ]
then
echo "Password error!!"
exit 2
fi
ACTION()
{
read -p "Please input action: "DB_Action
case $DB_Action in
B|b)
mv /mnt/mysqldump/${2}.sql /mnt/mysqldump/${2}_backup.sql
mysqldump -uroot -p$1 $2 > /mnt/mysqldump/${2}.sql
;;
O|o)
mysqldump -uroot -p$1 $2 > /mnt/mysqldump/${2}.sql
;;
S|s)
;;
*)
echo "Wrong Action!! Please input o|b|s"
ACTION
esac
}
for DATABASE in `mysql -uroot -pwestos -e "SHOW DATABASES;" -EN | grep -E '\*|schema$' -v`
do
[ -d "/mnt/mysqldump" ]|| mkdir -p /mnt/mysqldump
if [ ! -e "/mnt/mysqldump/${DATABASE}.sql" ]
then
mysqldump -uroot -p$1 $DATABASE > /mnt/mysqldump/${DATABASE}.sql
echo ${DATABASE}.sql is dumped!!
else
echo "/mnt/mysqldump/${DATABASE}.sql is exist!!"
echo "[B]ackup [S]ikp [O]verwrite"
ACTION westos $DATABASE
fi
done