1.通过位置变量创建 Linux 系统账户及密码
[root@ localhost ~]
useradd "$1 "
echo "$2 " | passwd ‐‐stdin "$1 "
[root@ localhost ~]
Changing password for user tom.
passwd: all authentication tokens updated successfully.
2.每周 5 使用 tar 命令备份/var/log 下的所有日志文件
[root@ localhost ~]
tar - czf log- `date + % Y% m% d`. tar. gz / var / log
crontab - e
00 03 * * 5 / root/ 2. sh
3.监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M时,发送报警邮件给 root 管理员
[root@ localhost ~]
disk_size=$( df / | awk '/\//{print $4}' )
mem_size=$( free | awk '/Mem/{print $4}' )
while :
do
if [ $disk_size -le 512000 - a $mem_size -le 1024000 ]
then
mail ‐s "Warning" root <<EOF
Insufficient resources, 资源不足
EOF
fi
done
4.脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,猜小了或猜大了,直至用户猜对脚本结束。
num=$[RANDOM%100+1]
echo "$num "
while :
do
read - p "生成了一个 1‐100 的随机数,你猜: " cai
if [ $cai -eq $num ]
then
echo "恭喜,猜对了"
exit
elif [ $cai -gt $num ]
then
echo "Oops,猜大了"
else
echo "Oops,猜小了"
fi
done
5.检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员(使用字串对比版本)
if [ $USER == "root" ]
then
yum ‐y install vsftpd
else
echo "不是管理员,没有权限安装"
fi
6.依次提示用户输入 3 个整数,脚本根据数字大小依次排序输出 3 个数字
read - p "请输入一个整数:" num1
read - p "请输入一个整数:" num2
read - p "请输入一个整数:" num3
tmp=0
if [ $num1 -gt $num2 ] ; then
tmp=$num1
num1=$num2
num2=$tmp
fi
if [ $num1 -gt $num3 ] ; then
tmp=$num1
num1=$num3
num3=$tmp
fi
if [ $num2 -gt $num3 ] ; then
tmp=$num2
num2=$num3
num3=$tmp
fi
echo "排序后数据(从小到大)为:$num1 ,$num2 ,$num3 "
7.编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(多进程版)
myping( ) {
ping ‐c 2 ‐i 0. 3 ‐W 1 $1 &>/ dev/ null
if [ $? -eq 0 ] ; then
echo "$1 is up"
else
echo "$1 is down"
fi
}
for i in { 1. . 254}
do
myping 192. 168. 4. $i &
done
8.编写批量修改扩展名脚本
for i in "ls *.$1 "
do
mv $i ${ i% . * } . $2
done
9.切割 Nginx 日志文件(防止单个文件过大,后期处理很困难)
logs_path="/usr/local/nginx/logs/"
mv ${ logs_path} access. log ${ logs_path} access_$( date - d "yesterday" + "%Y%m%d" ) . log
kill - USR1 `cat / usr/ local/ nginx/ logs/ nginx. pid`
10.检测 MySQL 数据库连接数量,超过500时报警并发送邮件给管理员
log_file=/ var / log/ mysql_count. log
user=root
passwd=123456
while :
do
sleep 2
count=`mysqladmin - u "$user " - p "$passwd " status | awk '{print $4}' `
echo "`date +%Y‐%m‐%d` 并发连接数为:$count " >> $log_file
if [ $count -gt 500 ]
then
mail ‐s "Warning" root <<EOF
Insufficient resources, 连接数超过500
EOF
fi
done