2016-05-31 10 views
-1

私はRaspberry PIをマシンのクロッキングとして使用しています。
イーサネットインターフェイスは数時間おきに1日おきにダウンします。
これはマシンのクロッキングとして設定した2番目の桁です。元のものでは、ワイヤレスを使用し、同じ問題がワイヤレスインターフェイスで発生しました。無線LANの問題で、あなたはUSB無線LANアダプターを取り外して、それをソートするために再び接続することができます。しかし、私はイーサネットスロットにアクセスできないので、新しいpiでpiケースを開くことができません。netがダウンしたときにbashを使用してRaspberry PIインターフェイスを自動的に再起動する

計画は、cronでスクリプトを使用して10分ごとに実行することです。

このため、私はスクリプトを使ってインターフェイスを再起動しました。このスクリプトのアイデアはゲートウェイをpingすることです。応答が受信されない場合、piはインタフェースeth0でIFDOWNを実行し、次にIFUPを実行する必要があります。これに失敗した場合は、再起動する必要があります。しかし、私が試したすべてのスクリプトは失敗しました。

#!/bin/bash 
function pingf1 { 
ping1=$(ping -c 1 10.0.0.1) 
ping1result=$? 
echo $ping1result 
if [ $ping1result -eq 1 ] 
then 
sudo /sbin/ifdown eth0 #or wlan0 if using on old clocker 
sudo /sbin/ifup eth0 #or wlan0 if using on old clocker 
fi 
} 
pingf1 
exit 

、私はこのポストは、おそらく重複ポストとしてマークされることを承知していますが、私はすでに、スタック交換上のさまざまなソリューションの多くを試してみましたし、どれものために働いている:現在、私は次のスクリプトを使用しています私。

+0

に指定しない限り、それはパスワードの入力を求めるデフォルトで以来、あなたはsudoを含める必要はありませんので、あなたのcronジョブは、ルートを介して実行されていることを確認しますが、 'sudoを/ sbinに/ ifdownをeth0'ず、 'sudo/sbin/ifup eth0'は期待どおりに動作しますか? – andlrc

+0

私はあなたのスクリプトがrootで実行されず、これらのコマンドがパスワードを要求するかもしれないことを示唆しています。 – andlrc

+0

@andlrcはい私がsudo/sbin/ifdown eth0を実行すると動作します。スクリプトを手動で実行すると、パーミッションにエラーがありません。もし私が/ sbin/ifdownを置かないなら、スクリプトを実行するとスクリプトが動かない。私はエラー報告を受け取ります。 –

答えて

1

@andlrcのようなサウンドはsudoに関しては正しいですが、rootユーザーからcronjobを作成した場合はそこにsudoは必要ありません。

代わりに、あなたのcronジョブでこのスクリプトを使用して、物事をシンプルに保つために:

#!/bin/bash 
if ! ping -q -c 1 192.168.1.121 &>/dev/null; then 
    /sbin/ifdown eth0 #or wlan0 if using on old clocker 
    /sbin/ifup eth0 #or wlan0 if using on old clocker 
fi 
exit 

を、それはif文で行うことができますので、ここでは、$?上の不要な変数とチェックを使用していません。

は、/ etc/sudoersの

関連する問題