Bagaimana cara memeriksa dari baris perintah bahwa jaringan dapat dijangkau?


12

Saya ingin mengirim growl kepada diri saya sendiri setelah server SuSE menyelesaikan proses booting. Saya mendapat pesan ini socket_sendto(): unable to write to socket [101]: Network is unreachable in.

Bagaimana saya bisa mengecek dari baris perintah jika jaringan dapat dijangkau dan menunggu kalau-kalau tidak?



Linux satu-liner untuk menjawab ya atau tidak, kita terhubung ke internet: ping -c 1 www.yourtrustedserver.com | grep " 0% packet loss". Apa yang dilakukan adalah melakukan ping server dengan satu paket, dan menangkap output untuk string "0% packet loss". (ruang sebelum 0% penting) Jika perintah mengembalikan satu baris, Anda terhubung, jika tidak, tidak terhubung.
Eric Leschinski

Jawaban:


13

ping untuk host luar dapat gagal karena banyak alasan, hanya beberapa yang benar-benar mengatakan sesuatu yang berguna tentang keadaan jaringan Anda sendiri.

Sebagai langkah pertama, buka jendela terminal dan ketik ip route ls

Anda akan melihat output di sepanjang baris

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 

Ini menunjukkan bahwa jaringan lokal Anda adalah koneksi ethernet ( eth0) dengan alamat tersebut 192.168.15.0, dan bahwa gateway default-nya di mana ia mengakses seluruh internet dapat ditemukan di 192.168.15.1.

Selanjutnya, Anda dapat mencoba ke pingalamat itu:

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

Jika Anda melihat sesuatu yang mirip dengan yang di atas, jaringan lokal Anda, setidaknya, baik-baik saja. Pada titik ini Anda dapat mulai mencari dengan alat yang lebih canggih seperti tracerouteuntuk melihat di mana koneksi Anda ke tujuan mungkin gagal.

Namun, setelah pemeriksaan cepat google dari apa growlyang sebenarnya seharusnya saya dapatkan perasaan bahwa ada sesuatu yang salah. Bisakah Anda memperluas pertanyaan Anda untuk memberi kami beberapa detail tentang apa yang Anda coba lakukan, bagaimana Anda mencobanya, dan hasil kesalahan penuh? Garis yang saat ini Anda berikan kepada kami akan terputus tiba-tiba ...


3
ip route get 1.2.3.4lebih dapat diandalkan daripada hanya melakukan ip route ls. Yang pertama akan mulai berlaku aturan yang ada di samping rute. Ini juga menghilangkan kemungkinan salah membaca tabel routing.
Patrick

3

Cara yang sangat sederhana dan cepat adalah dengan menggunakan pingperintah.

Anda cukup mengetik

 $ ping yahoo.com

(atau cnn.com atau host lain) dan lihat apakah Anda mendapatkan output kembali. Ini mengasumsikan bahwa nama host dapat diselesaikan (mis. Dns berfungsi). Jika tidak, mudah-mudahan Anda dapat memberikan alamat IP / nomor yang valid dari sistem jarak jauh dan melihat apakah itu dapat dihubungi.

Inilah halaman ping man .

Perbarui :

Sebagai contoh cepat, Anda dapat memeriksa nilai kembali (misalnya, dengan "echo $?") dari pinguntuk melihat apakah perintah berhasil (Anda selalu bisa mem-pipkan output dari perintah ke > /dev/nul). Catatan saya gunakan di -c 1sini, tetapi Anda bisa menggunakan lebih banyak.

$ 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

Tetapi bagaimana saya bisa menyadari dari menggunakan ping bahwa semuanya baik-baik saja?
Radek

1
@ Radek Sudahkah Anda mencoba menjalankannya? ping memberi tahu Anda jika mendapat balasan.
jw013

Bagaimana jika server hanya menggunakan intranet dan tidak memiliki akses ke dunia luar?
Radek

@ jw013: Saya belum mencoba ... Saya tidak tahu menggunakan ping dari skrip yang tidak dijaga.
Radek

3
@ Radek cukup sederhana. Saya berasumsi dengan 'konektivitas' maksud Anda dapat berbicara dengan beberapa host lain di intranet. Jadi jalankan ping -c 2 -n <other host's IP>dan operasikan pada kode kembali: jika benar (0), maka ia memiliki konektivitas; jika false (1), maka itu tidak dapat berbicara dengan mesin itu.
lxop

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.