我有一个脚本,检查是否PPTP VPN正在运行,如果没有它重新连接PPTP VPN,当我手动运行该脚本让它执行罚款,当我设置一个cron作业,没有运行
* * * * * /bin/bash /var/scripts/vpn-check.sh
Run Code Online (Sandbox Code Playgroud)
脚本来了:
#!/bin/sh
/bin/ping -c3 192.168.17.27 > /tmp/pingreport
result=`grep "0 received" /tmp/pingreport`
truncresult="`echo "$result" | sed 's/^\(.................................\).*$$'`"
if [[ $truncresult == "3 packets transmitted, 0 received" ]]; then
/usr/sbin/pppd call home
fi
Run Code Online (Sandbox Code Playgroud)
use*_*956 11
最后我找到了一个解决方案...我需要运行cron而不是
crontab -e
Run Code Online (Sandbox Code Playgroud)
它需要运行
nano /etc/crontab
Run Code Online (Sandbox Code Playgroud)
喜欢的东西
*/5 * * * * root /bin/bash /var/scripts/vpn-check.sh
Run Code Online (Sandbox Code Playgroud)
现在很好!
谢谢大家的帮助......希望我的解决方案能够帮助其他人.
经过很长时间的错误,我只是这样做了:
SHELL=/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin
* * * * * /bin/bash /home/joaovitordeon/Documentos/test.sh
Run Code Online (Sandbox Code Playgroud)
其中test.sh包含:
#!/bin/bash
/usr/bin/python3 /home/joaovitordeon/Documentos/test.py;
Run Code Online (Sandbox Code Playgroud)
如果您确定脚本在 cron 之外运行,请执行
printf "SHELL=$SHELL\nPATH=$PATH\n* * * * * /bin/bash /var/scripts/vpn-check.sh\n"
Run Code Online (Sandbox Code Playgroud)
对您正在使用的任何 crontab 执行 crontab -e 并将其替换为上述命令的输出。这应该反映您的大部分环境,以防出现某些丢失路径问题或其他问题。还要检查日志中是否有任何错误。
尽管看起来脚本确实有错误,或者您在将其复制到此处时弄乱了某些内容
sed: -e expression #1, char 44: unterminated `s' command
./bad.sh: 5: ./bad.sh: [[: not found
Run Code Online (Sandbox Code Playgroud)
简单的替代脚本
#!/bin/bash
if [[ $(ping -c3 192.168.17.27) == *"0 received"* ]]; then
/usr/sbin/pppd call home
fi
Run Code Online (Sandbox Code Playgroud)