练习1.
在/var/log/secure查找连接失败的主机,并统计次数,累计连接失败超过3次,将此主机加入系统黑名单(/etc/hosts.deny)
#!/bin/bash
cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort |uniq -c |awk '{print $2"="$1}' >/tmp/blacklist
MAXCOUNT="3"
for i in `cat /tmp/blacklist`
IP=`echo $i | awk -F= '{print $1}'`
NUM=`echo &i |awk -F= '{print $2}'`
if [ $NUM -gt $MAXCOUNT ];then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo "ssd:$IP" >> /etc/hosts.deny
fi
fi
done
脚本执行结果展示:
练习2.
创建数据库harry,natasha,tom,表以及备份数据库
首先安装数据库,并进行数据库的安全初始化(该步骤在此省略,不明白的小伙伴可以看之前的关于mariadb数据库的博客)
#!/bin/bash
MY_CREATE="mysql -uroot -plee"
MY_DUMP="mysqldump -uroot -plee"
for ((i=1;i<=3;i++))
do {
echo "*********************"
read -p "请输入你要创建的数据库的名字:" dbname
$MY_CREATE -e "CREATE DATABASE $dbname;"
for((j=1;j<=3;j++))
do {
read -p "请输入你要创建的表的名字:" tbname
$MY_CREATE -e "USE $dbname;CREATE TABLE $tbname( id int,username varc har(10) not null );"
}
done
$MY_DUMP $dbname >>/mnt/$dbname.sql
$MY_CREATE -e "SHOW DATABASES;"
echo "***********************"
}
done
脚本执行结果如下:
练习3.
数据库备份,执行script.sh $dbpasswd 备份数据库中所有库到/mnt/mysqldump目录中,备份文件名称为“库名称.sql”,当此文件存在时进入交互模式,询问动作,输入“s”跳过备份,输入“b”,备份“库名称.sql”为“库名称_backup.sql”,输入“0”时,覆盖源文件
#!/bin/bash
MYUSER=root
MYPASS=lee
MYCMD="mysql -u$MYUSER -p$MYPASS"
MYDUMP="mysqldump -u$MYUSER -p$MYPASS"
DBPATH=/mnt/mysqldump/
read -p "请输入登录密码:" passwd
if [ "$passwd" == "$MYPASS" ];then {
[ ! -d "$DBPATH" ] && mkdir -p $DBPATH
DB=`$MYCMD -e "SHOW DATABASES;" | sed '1,2d' |egrep -v "mysql|schema"`
for dbname in $DB
do {
if [ -e "$DBPATH/${dbname}.sql" ];then {
echo -e "
s 跳过备份
b 备份"库名称.sql"为"库名称_backup.sql"
o 覆盖源文件
"
read -p "请输入你的选择:" char
case $char in
s|S)
;;
b|B)
$MYDUMP -e $dbname > $DBPATH/${dbname}_backup.sql
;;
o|O)
$MYDUMP -e $dbname > $DBPATH/${dbname}.sql
;;
esac
}
else
echo "^^^^^^^^^^^^^^^^^^"
$MYDUMP $dbname > $DBPATH/${dbname}.sql
fi
}
done
}
else {
echo "密码错误,请重新输入!!"
exit
}
fi
脚本执行结果如下:
第一次执行脚本时,/mnt/mysqldump目录下没有数据库的备份文件,直接执行备份的步骤
第二次执行脚本时,已经生成备份文件