1

切断されるたびに pppd を起動したい。1分ごとに実行するシェルスクリプトをセットアップして、ダウンして再接続するかどうかを確認しようとしています。

というbashスクリプトがありますvpn-check.sh

ping -c3 10.8.3.0 > pingreport
result=`grep "0 received" pingreport`
truncresult="`echo "$result" | sed 's/^\(.................................\).*$/\1/'`"
if [[ $truncresult == "3 packets transmitted, 0 received" ]]; then
  pon VPNname
fi

このスクリプトを cli から直接実行すると、動作して ppp が起動しますが、(root ユーザーに対して) cronjob を介して同じスクリプトを実行すると、動作しません。

私は以下を試しましたが、うまくいきませんでした

*/1 * * * * bash /root/vpn-check.sh > /root/cronlog.txt 2>&1

私は以下を試しましたが、うまくいきませんでした

*/1 * * * * /root/vpn-check.sh > /root/cronlog.txt 2>&1

最後に、私は試しました:

*/1 * * * * /usr/sbin/pppd call VPNname> /root/cronlog.txt 2>&1

何が間違っているのかわかりません。

4

4 に答える 4

1

ログによると、正しいユーザーとして呼び出されているときに、一部のスクリプトが機能し、cron から機能しない理由はまだわかりません。

私が見つけた唯一の解決策は、実行することです:

crontab -e

次の行を一番上に追加します (フルパスで pppd デーモンを呼び出していますが):

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
于 2016-04-29T04:53:10.257 に答える
0

それを私が直した。これはすべて実行中に行わcrontab -e れましたが、ユーザー名を追加するには、下にあるシステム全体の cron ファイルに追加する必要があります。/etc/crontab

ジョブを開始するユーザーは、上記のシステム全体の cron ファイルにのみ追加できます。

于 2013-07-26T17:25:53.383 に答える