需求:随机修改nginx端口,一小时一次,然后发邮件通知
脚本思路,先在/root目录下建立个1.txt文件,随机填入4位数字
建个2.sh脚本,脚本内容如下:
#!/bin/bash cd b=`echo $RANDOM |cut -c 1-4` echo $b >2.txt
上主脚本port_change.sh
#!/bin/bash cd c=`cat 1.txt` d=`cat 2.txt` netstat -lnpt|awk '{print $4}' |awk -F: '{print $2}' |grep -v "^$">3.txt grep $d 3.txt if [ $? -ne 0 ];then sed -i "/listen/s#$c#$d#g" /usr/local/nginx/conf/nginx.conf /usr/local/nginx/sbin/nginx -s reload echo $d >1.txt /bin/sh /root/2.sh echo "现在的端口是$d" |mail -s "端口" xxxxx@qq.com xxxxx@qq.com fi
脚本思路如下:
先把nginx的端口修改成1.txt里的数字,也就是随机填入的数字,然后运行下2.sh,生成2.txt里的内容,也就是一个随机生成的数字,然后运行主脚本,这个脚本会先定义两个变量$c,$d,也就是1.txt和2.txt里数字,然后判断要修改的端口有没有跟现在打开的端口冲突,如果没有就将$d(新生成的随机数)替换掉$c(刚刚手工填的数字),然后将$d的数字重定向到1.txt里,也就是将$c的数字变成$d的数字,再运行2.sh脚本,重新生成新的$d,把这个脚本放在crontab里,一小时运行一次,下次运行的时候,又会用新生成的$d替换掉$c,这样就达到了自动随机修改nginx端口的目的
注:如果想用mail发邮件,需要先安装mailx这个软件,然后在/etc/mailx里定义下账号信息,like this:
set from=xxxxxxxxx@qq.com smtp=smtp.qq.com
set smtp-auth-user=xxxxxxx@qq.com smtp-auth-password=xxxxxxx
set smtp-auth=login
转载于:https://blog.51cto.com/pc1990/1758930