需求:隨機修改nginx端口,一小時一次,而後發郵件通知nginx
腳本思路,先在/root目錄下創建個1.txt文件,隨機填入4位數字
c#
建個2.sh腳本,腳本內容以下:bash
#!/bin/bash cd b=`echo $RANDOM |cut -c 1-4` echo $b >2.txt
上主腳本port_change.shide
#!/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
腳本思路以下:this
先把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端口的目的crontab
注:若是想用mail發郵件,須要先安裝mailx這個軟件,而後在/etc/mailx裏定義下帳號信息,like this:it
set from=xxxxxxxxx@qq.com smtp=smtp.qq.com class
set smtp-auth-user=xxxxxxx@qq.com smtp-auth-password=xxxxxxxawk
set smtp-auth=login變量