题目1:
要求用户输入用户名和密码(非明文方式)后自动创建此用户并设定密码
解答:
#!/bin/bash
read -p "Pls Input UserName: " NAME
read -p "Pls Input PassWord: " -s PASSWD #-s表示非明文输入
echo " "
useradd $NAME
echo $PASSWD|passwd --stdin $NAME
题目2:
要求同题目1,还要求用户能在不退出脚本的情况下循环创建、删除用户,只有在输入exit时才会退出脚本
解答:
#!/bin/bash
READ() #定义一个函数
{
[ $ACTION == "create" ] && (
read -p "Pls Input UserName: " NAME
read -p "Pls Input PassWord: " -s PASSWD
echo " "
useradd $NAME
echo $PASSWD|passwd --stdin $NAME
)
[ $ACTION == "delete" ] && (
read -p "Pls Input UserName: " NAME
userdel -r $NAME
echo "$NAME Is Delete"
)
}
ACTION_DO() #第二个函数
{
read -p "Pls Input What You Want: " ACTION
if
[ $ACTION == "create" ]
then
READ create #调用第一个函数
elif
[ $ACTION == "delete" ]
then
READ delete
elif
[ $ACTION == "exit" ]
then
exit
else
echo -e "\033[31mError: Pls Input 'create' 'delete' 'exit'\033[0m" #表示输出红色字体
fi
ACTION_DO #调用函数
}
ACTION_DO #调用函数
题目3:
检查一个ip是否通
解答:
#!/bin/bash
read -p "Pls Input You Want Check IP: " IP
ping -c1 -w1 $IP &>/dev/null && echo $IP Is up || echo $IP Is down #-c1表示ping一次,-w1维持1秒
题目4:
做一个倒计时,要求从1分10秒开始到1秒为止
解答:
#!/bin/bash
for ((SEC=10;SEC>0;SEC--))
do
echo -n "Last 1min${SEC}s "
sleep 1
echo -ne "\r \r"
done
for ((NUM=60;NUM>0;NUM--))
do
echo -n "Last ${NUM}s "
sleep 1
echo -ne "\r \r"
done
题目5:
备份数据库的脚本。要求备份除了information_schema和performance_schema库之外的所有库,并能检测服务是否正常,如果不正常报错退出
解答:
#!/bin/bash
mysql -uroot -p123456 -e "show databases" &>/dev/null
case $? in
0) #$?返回值为0代表服务正常
NAME=`mysql -uroot -p123456 -e "show databases" -EN|grep -E "^\*|^information_schema|^performance_schema" -v` #过滤多余数据库
for DB_NAME in $NAME
do
if
[ -e /mnt/sql_bak/${DB_NAME}.sql ]
then
mv /mnt/sql_bak/${DB_NAME}.sql /mnt/sql_bak/${DB_NAME}_`date +%m-%d_%Hh%Mmin%Ss`_bak.sql #如果要备份的数据库文件已存在就修改名字,date +%m-%d_%Hh%Mmin%Ss表示文件后缀名加上月日分时秒
echo -e "\033[31m${DB_NAME}.sql IS Exist And BackUp To ${DB_NAME}_`date +%m-%d_%Hh%Mmin%Ss`_bak.sql\033[0m"
mysqldump -uroot -p123456 $DB_NAME > /mnt/sql_bak/${DB_NAME}.sql #备份数据库
echo "${DB_NAME}.sql Is Create"
else
mysqldump -uroot -p123456 $DB_NAME > /mnt/sql_bak/${DB_NAME}.sql
echo "${DB_NAME}.sql Is Create"
fi
done
;;
*)
echo -e "\033[31mError: MariaDB Is Not Running\033[0m"
esac
题目6:
有两个文件,一个内容是用户名,一个内容是密码,要求写脚本自动创建两个文件中的用户名和密码
#!/bin/bash
Max_Line=`wc -l $1 | awk '{print $1}'` #wc统计$1文件的行数,awk过滤出第一列
for ((NUM=1;NUM<=$Max_Line;NUM++))
do
USERNAME=`sed -n ${NUM}p $1`
PASSWORD=`sed -n ${NUM}p $2`
useradd $USERNAME
echo $PASSWORD | passwd --stdin $USERNAME
done
题目6:
#!/bin/bash
CREATE()
{
Max_Line=`wc -l $1 | awk '{print $1}'`
for ((NUM=1;NUM<=$Max_Line;NUM++))
do
USERNAME=`sed -n ${NUM}p $1`
PASSWORD=`sed -n ${NUM}p $2`
id $USERNAME &>/dev/null
if
[ "$?" -ne 0 ]
then
useradd $USERNAME
echo $PASSWORD | passwd --stdin $USERNAME
else
echo -e "\033[31m$USERNAME Is Exist\033[0m"
read -p "Pls Choose \"skip\" Or \"delete\" $USERNAME: " INPUT
if
[ "$INPUT" == "skip" ]
then
continue
elif
[ "$INPUT" == "delete" ]
then
userdel -r $USERNAME
echo "$USERNAME Is Delete"
else
echo "Just Can Input \"skip\" Or \"delete\""
fi
fi
done
}
if
[ -n "$1" -a -n "$2" ]
then
CREATE $1 $2
else
echo -e "\033[31mPls Input Two File After Script\033[0m"
exit
fi