隨機修改nginx端口腳本及思路

需求:隨機修改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變量

相關文章
相關標籤/搜索