實際生產案例
生產機房自建PPTP客戶端通過撥號連接到生產機房,但是一旦客戶端網絡是意外斷線再重新撥號
會產生IP沖突,於是寫了一個腳本監控PPTP的IP是否有多個(一般沖突以后會生成2個IP)
#!/bin/bash
#author Liuyueming
. /etc/profile #開始沒有加這個環境變量
for i in {10..35}
do
n=`ifconfig|grep 10.13.0.${i}|wc -l` #循環取ip並計數
# echo `ifconfig|grep 10.13.0.${i}`
if [ $n -gt 1 ] #如果同一個ip出現兩次及大於1說明ip沖突需要清除
then
for network in `ip add|grep 10.13.0.$i|sed 's#^.*global ##g'` #取出重復ip的網卡名刪除掉
do
ip addr flush $network
done
fi
done
手動執行沒有報錯,但是放入crontab執行就會報錯提示命令ifconfig not find

命令行執行腳本成,但crontab執行shell腳本不成功是由於兩個原因導致
解決方法
1. 路徑問題
查看crontab中執行該腳本的路徑是否正確。例如:
*/1 * * * * cd /mypath/;./my_shell.sh > /dev/null 2>&1
2. 環境變量問題導致
在shell腳本中加入環境變量文件生效的命令,一般加在腳本的第二行:
有兩種方法可以使環境變量文件生效:
- 方法1:
. /etc/profile
注意: . 和 /etc/profile 空格
- 方法2:
source /etc/profile
