0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ubuntuでのネットワーク死活確認とネットワーク再起動

Posted at

ubuntuをヘッドレスで使っている.ネットワークのトラブルが発生・解消しても再接続できないことがあった.

crontabで死活確認を行い,ネットワーク再起動をかける.

ほかにいくつか良い方法があるとは思いますが,今回はこの方法を利用した.

1.NetworkManager を使っているか確認する.

systemctl is-active NetworkManager.service
# → active と返ってくれば稼働中、inactive や failed なら動いていません。

2./usr/local/bin/check_network.sh という名前で以下を保存する.

sudo geditなどでエディターを開く.

/usr/local/bin/check_network.sh
#!/bin/bash

# ———— 設定 ————
# チェック先(Google DNS 等)
TARGET=8.8.8.8

# 再起動コマンド(NetworkManager を使っている場合)
RESTART_CMD="systemctl restart NetworkManager.service"
# ※もし network-manager ではなく /etc/init.d/networking を使うなら:
# RESTART_CMD="/etc/init.d/networking restart"

# ———— 処理 ————
if ! ping -c1 -W2 $TARGET &>/dev/null; then
  echo "$(date '+%F %T') ネットワーク未検出 → 再起動実行" >> /var/log/check_network.log
  $RESTART_CMD
fi

pingが8.8.8.8に通らず,再起動されたときにログを取ります.

保存後、実行権限を付与:

sudo chmod +x /usr/local/bin/check_network.sh

#確認
ls -la /usr/local/bin/check_network.sh

3.10分ごとに実行する cron ジョブを登録

スクリプト中のsystemctlがsudo権限が必要なので,こちらもsudo.

sudo crontab -e

コマンドラインのnanoエディターなど我慢して使う.OSのクリップボードからペーストできないらしい.
以下の行を追加する.チェックする時間はお好みで.

*/10 * * * * /usr/local/bin/check_network.sh

参考

スクリプトをホームホルダにおいても良いですが,crontab はsudoを使います.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?