VM での接続損失を修正するにはどうすればよいですか?

VM での接続損失を修正するにはどうすればよいですか?

私の仮想マシンは Linux 上でインターネット接続を失うことがあるため、常に接続しておく必要があります。そこで、次のスクリプトを作成しました。

#!/bin/bash 
wget -q --tries=10 --timeout=20 --spider http://google.com 
if [[ $? -ne 0 ]]; then 
    service network-manager restart
fi

このスクリプトをコンソールで実行すると動作しますが、次のようにcronなります:

network-manager: unrecognized service

これを実現するにはどうすればいいでしょうか、あるいは他にどのようなアプローチが役立つでしょうか?

- - - - - - - - 解決 - - - - - - - -

コンソールで起動すると機能するが、コンソールで実行したタスク中には機能しない理由を知るにはcron:

echo $PATH

次に次のように表示されます:

 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

そこでスクリプトを次のように編集します。

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

wget -q --tries=10 --timeout=20 --spider http://google.com 
if [[ $? -ne 0 ]]; then 
    service network-manager restart
fi

そして、それは今機能します!

答え1

Linux Mint に似たディストリビューションを使用していると仮定します...

「サービス」プログラムは実行する「ネットワーク マネージャ」スクリプトを見つけられないようです。/etc/init または /etc/init.d を検索するので、そこで何が利用できるか確認できます。

または、オートコンプリートで表示されるかどうかを確認します (私の意見では、その方が簡単です)。ターミナルを開いて次のように入力します。

service net

数回入力するとTAB、「networkign」のような名前が自動補完され、次のような使用可能なオプションも表示されます。

$ service networking 
force-reload  reload        restart       start         stop   

したがって、次の使用を試みることができます (sudoスクリプトがまだルートになっていない場合に必要になる場合があります)。

service networking restart

また、pingダウンロードを試みることなく、1 分ごとに Google などのサイトにアクセスして、ネットワークがまだ稼働しているかどうかを確認することもできます。


VM のバグや奇妙な設定がないか確認してみてください。通常、ホスト コンピューターがネットワーク接続を失わない限り、VM のネットワーク接続は失われません...

関連情報