#####shell脚本示例应用######

之前的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值