shell小脚本

1.通过位置变量创建 Linux 系统账户及密码

[root@ localhost ~]# vim 1.sh
#!/bin/bash
useradd    "$1" 
echo "$2"  |  passwd  ‐‐stdin  "$1"
[root@ localhost ~]# sh 1.sh tom 123
Changing password for user tom.
passwd: all authentication tokens updated successfully.

2.每周 5 使用 tar 命令备份/var/log 下的所有日志文件

[root@ localhost ~]# vim 2.sh
#!/bin/bash
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 ~]# vim 3.sh
#!/bin/bash
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
fi
done

4.脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,猜小了或猜大了,直至用户猜对脚本结束。

 #!/bin/bash
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,如果不是,则提示您非管理员(使用字串对比版本)

#!/bin/bash
if [ $USER == "root" ]
then
	yum ‐y install vsftpd
else
    echo "不是管理员,没有权限安装"
fi

6.依次提示用户输入 3 个整数,脚本根据数字大小依次排序输出 3 个数字

#!/bin/bash
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 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(多进程版)

#!/bin/bash
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.编写批量修改扩展名脚本

#!/bin/bash
for i in "ls *.$1"
do
   	mv $i ${i%.*}.$2
done

9.切割 Nginx 日志文件(防止单个文件过大,后期处理很困难)

#!/bin/bash 
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时报警并发送邮件给管理员

#!/bin/bash
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  <,连接数超过500
EOF
fi
done

你可能感兴趣的:(shell小脚本)