コマンドラインからネットワークに接続できることを確認する方法は?

コマンドラインからネットワークに接続できることを確認する方法は?

SuSEサーバーが起動プロセスを完了した後、自分に好言状を送信したいと思います。私はこのメッセージを受け取りましたsocket_sendto(): unable to write to socket [101]: Network is unreachable in

コマンドラインからネットワークに接続できることを確認し、ネットワークに接続できない場合に備えてどうすればよいですか?


答え1

ping外部ホストエラーにはいくつかの原因があり、そのうち実際にネットワークの状態に関する有用な情報を知らせるのはほんの一部です。

最初のステップは、ターミナルウィンドウを開き、次のように入力することです。 ip route ls

次のような出力が表示されます。

shadur@equinox:~$ ip route ls
192.168.15.0/24 dev eth0  proto kernel  scope link  src 192.168.15.102 
default via 192.168.15.1 dev eth0 

これは、ローカルネットワークがeth0そのアドレスのイーサネット接続()であり、残りの192.168.15.0インターネットのデフォルトゲートウェイをに見つけることができることを示します192.168.15.1

ping次に、次のアドレスを試してください。

shadur@equinox:~$ ping 192.168.15.1
PING 192.168.15.1 (192.168.15.1) 56(84) bytes of data.
64 bytes from 192.168.15.1: icmp_req=1 ttl=255 time=0.352 ms
64 bytes from 192.168.15.1: icmp_req=2 ttl=255 time=0.269 ms
^C
--- 192.168.15.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.269/0.310/0.352/0.045 ms

上記のようなものが表示されたら、自分のローカルネットワークは少なくとも良いです。この時点で、tracerouteターゲットへの接続が失敗する可能性がある場所を確認するなど、高度なツールを使用して調査を開始できます。

growlしかし、実際に何が起こっているのかをGoogleですばやく確認した後、何か他の問題があると感じました。質問を拡張して、何をしようとしているのか、試してみる方法、および完全なエラー出力に関する詳細を提供できますか?現在提供している回線が突然切れました...

答え2

非常に簡単で迅速な方法は、pingコマンドを使用することです。

やるべきことは入力するだけです

 $ ping yahoo.com

(またはcnn.comまたは他のホスト)出力が受信されていることを確認してください。これはホスト名を解決できると仮定します(つまり、DNSが稼働しています)。そうでない場合は、リモートシステムの有効なIPアドレス/番号を提供してアクセスできることを確認できます。

これはping マニュアルページ

修正する:

簡単な例で確認できます。戻り値(たとえば、"echo $?"fromを使用してコマンドがping成功したことを確認します(常にコマンドの出力にパイプすることができます> /dev/nul)。ここで私が-c 1使用しているものを参照してください。

$ ping -c 1 yahoo.com
PING yahoo.com (72.30.38.140) 56(84) bytes of data.
64 bytes from ir1.fp.vip.sp2.yahoo.com (72.30.38.140): icmp_seq=1 ttl=52 time=83.5 ms

--- yahoo.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 83.593/83.593/83.593/0.000 ms

echo $?
0


$ ping -c 1 unicorns.are.here
ping: unknown host unicorns.are.here

$ echo $?
2

答え3

netcat必要なサービスをご利用いたします。

たとえば、IPポートをテストすると成功します。

> nc -zv 192.168.1.1 80
Connection to 172.26.0.1 80 port [tcp/http] succeeded!

...そして失敗した

> nc -zv 192.168.1.1 22
netcat: connect to 172.26.0.1 port 22 (tcp) failed: Connection refused

10秒制限時間

> nc -zv -w 10 10.0.0.1 80
netcat: connect to 10.0.0.1 port 80 (tcp) timed out: Operation now in progress

答え4

私は次の関数を使用します。デフォルトはクワッド9ですが、他のドメインを渡すことができます。 15分間試してみるとタイムアウトします。

wait_for_dns() {

   local fqhn="quad9.net"
   fqhn=${1:-$fqhn}

   printf "waiting"
   for i in {1..15}; do
      local a_record=$(dig +short +time=2 $fqhn)

      if [[ $a_record != '' ]]; then
         printf "\n"
         return 0
      fi

      printf '.'
      sleep 60
   done

   printf "\n"
   return 1
}

関連情報