Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

サーバーのインターネット接続を確認するためのシンプルなbashスクリプト

大きなbashスクリプトを実行する前に、そのサーバーがインターネットに接続されているかどうかを確認したい場面は少なくありません。特に、cronで定期的にスクリプトを実行している場合、ネットワークが一時的に切断されていても処理が走ってしまうため、事前の接続チェックは非常に有効です。

以下に紹介するのは、その目的のために作られたごく小さなbashスクリプトです。

インターネット接続チェック用スクリプト

#!/bin/bash

WGET="/usr/bin/wget"

$WGET -q --tries=10 --timeout=5 https://www.google.com -O /tmp/index.google &> /dev/null
if [ ! -s /tmp/index.google ];then
	echo "no"
else
	echo "yes"
fi

スクリプトの仕組み

このスクリプトの動作はとてもシンプルです。wgetコマンドを使ってGoogleのトップページ(indexページ)のダウンロードを試みます。

  • ダウンロード成功時: 取得したファイル(/tmp/index.google)が空でなければ「yes」を出力します。つまり、インターネット接続が利用可能であることを意味します。
  • ダウンロード失敗時: ファイルが空、または存在しない場合は「no」を出力します。ネットワークに接続できない状態と判断されます。
  • タイムアウト時: --timeout=5オプションにより、5秒以内にページを取得できなかった場合も「no」を返します。
  • リトライ回数: --tries=10オプションにより、最大10回まで再試行を行います。

また、-qオプションと&> /dev/nullの組み合わせにより、wgetの出力やエラーメッセージはすべて非表示になり、スクリプトの実行結果だけが画面に出力されるようになっています。

応用のヒント

このスクリプトは単体でも使えますが、実際にはif文の分岐部分に実行したいメイン処理を組み込むのが一般的です。例えば、「yes」の場合のみバックアップ処理やデータ同期を行い、「no」の場合はログに記録して終了する、といった使い方ができます。

より厳密なチェックが必要な場合は、対象のHTTPステータスコードを確認できるcurl -s -o /dev/null -w "%{http_code}"を使う方法もあります。また、DNS解決のみを確認したい場合はhostdigコマンドを利用するのも良いでしょう。

他にも改善点やアイデアがあれば、ぜひコメントで教えてください! 🙂

  1. Linuxで効果的なBashスクリプトを書くための実践テクニック10選

    シェルスクリプトは、Linuxで学べる最も手軽なプログラミング手法のひとつです。システム管理におけるタスクの自動化や、簡単なユーティリティ・ツールの開発など、管理者にとって必須のスキルとも言えます。 本記事では、効果的かつ信頼性の高いbashスクリプトを書くために役立つ、実用的な10のヒントを紹介します。 1. スクリプトには必ずコメントを書く これはシェルスクリプトに限らず、あらゆるプログラミングで推奨される基本プラクティスです。コメントを適切に記述しておけば、後から自分や他の人がスクリプトを読んだときに、各部分が何をしているのかを素早く理解できます。 コメントは # 記号で定義します。 #

  2. Async JavaScriptでインターネット接続状態を正しく判定する方法 ― navigator.onLineの落とし穴とFetch APIによる確実な実装

    JavaScriptを使って、アプリがインターネットに接続されているかどうかを確認できるのでしょうか?本記事では、この「インターネット接続検出」に関する質問に対する最新の答えをご紹介します。解決策には、JavaScriptのFetch APIと、Async/Awaitを使った非同期コードを使用します。その前にまず、広く知られている定番の解決策を見て、それが必ずしも最適な選択肢とは言えない理由を考察してみましょう。navigator.onLinenavigatorインターフェースのonlineプロパティであるnavigator.onLineは、ブラウザのオンライン・オフライン状態を検出するために