Apakah ada cara mudah untuk memeriksa konektivitas Internet dari konsol? Saya mencoba untuk bermain-main dalam skrip shell. Satu ide yang tampaknya saya lakukan adalah dan memeriksa kode respons HTTP untuk menafsirkan jika koneksi Internet berfungsi dengan baik. Tapi saya pikir pasti ada cara mudah tanpa perlu memeriksa situs yang tidak pernah macet;)wget --spider http://www.google.co.in/
Sunting: Sepertinya ada banyak faktor yang dapat diperiksa secara individual, hal yang baik. Niat saya saat ini adalah untuk memeriksa apakah blog saya rusak. Saya memiliki pengaturan cron untuk memeriksanya setiap menit. Untuk ini, saya memeriksa kode respons HTTP dari wget --spider ke blog saya. Jika tidak 200, itu memberi tahu saya (saya percaya ini akan lebih baik daripada hanya melakukan ping, karena situs mungkin di bawah beban berat dan mungkin waktu keluar atau merespons sangat terlambat). Sekarang kemarin, ada beberapa masalah dengan Internet saya. LAN terhubung dengan baik tetapi saya tidak bisa mengakses situs apa pun. Jadi saya terus mendapatkan notifikasi karena skrip tidak dapat menemukan 200 di respons wget. Sekarang saya ingin memastikan bahwa itu menampilkan pemberitahuan kepada saya ketika saya memiliki konektivitas internet.
Jadi, memeriksa konektivitas DNS dan LAN agak berlebihan bagi saya karena saya tidak memiliki kebutuhan khusus untuk mencari tahu apa masalahnya. Jadi apa yang Anda sarankan bagaimana saya melakukannya?
Berikut ini skrip saya untuk terus memeriksa downtime untuk blog saya:
#!/bin/bash
# Sending the output of the wget in a variable and not what wget fetches
RESULT=`wget --spider http://blog.ashfame.com 2>&1`
FLAG=0
# Traverse the string considering it as an array of words
for x in $RESULT; do
if [ "$x" = '200' ]; then
FLAG=1 # This means all good
fi
done
if [ $FLAG -eq '0' ]; then
# A good point is to check if the internet is working or not
# Check if we have internet connectivity by some other site
RESULT=`wget --spider http://www.facebook.com 2>&1`
for x in $RESULT; do
if [ "$x" = '200' ]; then
FLAG=1 # This means we do have internet connectivity and the blog is actually down
fi
done
if [ $FLAG -eq '1' ]; then
DISPLAY=:0 notify-send -t 2000 -i /home/ashfame/Dropbox/Ubuntu/icons/network-idle.png "Downtime Alert!" "http://blog.ashfame.com/ is down."
fi
fi
exit
Dengan cara ini saya perlu memeriksa konektivitas internet hanya jika ada masalah dengan kode respons blog saya. Agak berat (karena saya tidak menggunakan ping) tetapi tidak boleh memberikan positif palsu. Kanan? Juga bagaimana saya dapat mengacak ping ke situs yang berbeda setiap kali, seperti facebook, google, yahoo dll. Juga (saya mencoba menghindari I / O) Saya dapat menulis ke file log yang dengannya saya dapat memeriksa jumlah pemeriksaan downtime dan kemudian lewati pemeriksaan lebih lanjut hingga situs turun atau menyebabkan pemeriksaan lebih lama (10 menit alih-alih setiap menit). Apa yang kamu pikirkan?
sumber
Jawaban:
Memeriksa apakah situs web tertentu sudah habis
Pertama, tersedia beberapa layanan pemantauan online yang bagus. Untuk memilih satu, Pingdom menyertakan akun gratis untuk memantau satu target. (Penafian: Saya tidak berafiliasi dengan Pingdom dengan cara apa pun).
Kedua, menggunakan
wget --spider
skrip Anda sendiri adalah ide yang bagus. Anda akan mendapatkan beberapa kesalahan positif saat komputer Anda mati, atau ketika server DNS Anda tidak berfungsi. Memeriksa kode pengembalian adalah cara mudah untuk mengimplementasikannya:Sekali lagi, ada kekurangan dalam pendekatan ini. Jika penyedia Anda telah merekam cache DNS Anda, tetapi server DNSnya rusak, yang lain tidak dapat mengakses situs Anda meskipun pemantauan mengatakan semuanya baik-baik saja. Anda dapat menulis solusi singkat dengan
host
, misalnyahost example.com <your dns server IP>
. Itu akan mengembalikan kesalahan jika server DNS tidak merespons, bahkan jika OpenDNS atau server DNS penyedia Anda berfungsi dengan baik.Memeriksa apakah internet berfungsi
Tidak ada cara mudah untuk menangani ini dalam setiap kasus.
Misalnya Anda dapat berjalan
ping -c1
di beberapa situs terkenal (misalnya www.google.com, facebook.com, dan ping.funet.fi) dan memeriksa kode pengembalian untuk menentukan apakah tujuan apa pun dapat dijangkau. Anda dapat secara otomatis memeriksa kode pengembalian dengan menggunakan variabel$?
. Parameter-c1
membatasi jumlah paket ping menjadi satu.Anda mungkin mengalami masalah dengan beberapa wifis publik ketika ada gateway masuk yang mengarahkan ulang semua ping dan permintaan HTTP. Jika demikian, Anda dapat memperoleh respons ping dan kode status HTTP non-kesalahan, bahkan ketika Anda tidak dapat mengakses situs lain.
Jika Anda ingin memeriksa status kabel, Anda dapat menggunakan
Dari output (kutipan):
Namun, ini tidak memberi tahu apakah Anda benar-benar memiliki konektivitas atau tidak, hanya apakah kabel tersambung dan ada sesuatu di ujung lainnya.
sumber
host
(permintaan DNS). Ini sangat cepat juga.Saya menggunakan metode ini ...
sumber
ping -c 1 8.8.8.8
danping -c 1 www.google.com
. Bagaimana itu?Saya baru saja digunakan
yang berhenti sampai koneksi jaringan hadir oleh manajer jaringan. Bekerja dengan baik. Anda dapat melakukan hal-hal lain dengan itu juga.
sumber
Memeriksa untuk melihat apakah suatu situs sudah habis biasanya dilakukan dengan alat pemantauan seperti
nagios
. Ini akan terus memantau situs, dan dapat memberi tahu Anda tentang pemadaman.Saat memeriksa apakah Internet naik dari baris perintah, saya menjalankan beberapa langkah:
ping google.com
(periksa DNS dan situs yang dapat dijangkau yang dikenal).wget
atauw3m
untuk mengambil halaman.Jika Internet tidak habis, diagnosa lahiriah.
Jika Internet naik tetapi situs turun periksa dengan
w3m http://isup.me/example.com
menggantiexample.com
dengan situs yang muncul. Gunakan wget, lynx, atau browser baris perintah mana pun yang Anda miliki jika Anda tidak menginstal browser w3m.sumber
if ! wget --spider http:///example.com; then
.[ $? != 0 ]
ini sama dengan tes! command
. wget didokumentasikan untuk mengembalikan 0 pada keberhasilan dan bukan 0 untuk kegagalan. Jika berperilaku identik cara yang pernah Anda kode itu. Jika wget mengembalikan kegagalan pada respons 200, tes akan gagal jika Anda menulisnya. Sama jika mengembalikan 0 untuk kode respons selain 200.Ini adalah shell shell yang saya gunakan untuk menguji konektivitas internet:
alarm.sh
Anda harus menginstal curl dan mpg321
Anda akan memerlukan file suara .mp3 yang diubah namanya menjadi alarm.mp3 di folder yang sama jika Anda ingin fungsi alarm yang dapat didengar. Akhirnya konfigurasikan URL situs web dan egrep sesuai kebutuhan Anda.
sumber
egrep -q
sebagai gantinyaegrep ... > /dev/null
while
loop?alarm.sh
di wd, jadi jika Anda memanggil skrip ini dari dir yang berbeda, itu akan salah, atau jika ada skrip yang dipanggilalarm.sh
di wd, itu akan memanggil itu sebagai gantinya. Jadi itu praktik buruk. Anda bisa menggunakannya"$0"
sebagai gantinya, tetapi satuwhile
lingkaran akan lebih baik.Memeriksa apakah internet berfungsi
Dari output (kutipan):
Namun, seperti yang disebutkan oleh orang lain, ini tidak memberi tahu apakah Anda benar-benar memiliki konektivitas atau tidak. Misalnya. Anda dapat terhubung ke router dan router belum tentu terhubung ke internet.
sumber
nm-tool
telah dihapus di Ubuntu 15.04+, tetapi Anda dapat menggunakannyanmcli
sebagai gantinya. Misalnya[[ $(nmcli -f STATE -t g) = connected ]]
nmcli -f STATE -t nm
Hal baiknya adalah independen dari situs web!nm-tool
dan hanyanmcli
akan memberi tahu Anda apakah Anda terhubung ke jaringan lokal atau tidak, yaitu apakah Anda terhubung ke wifi / ethernet rumah Anda atau tidak. Ini tidak akan memberi tahu Anda apakah Anda dapat menjangkau sesuatu di luar jaringan lokal Anda, yaitu internet.Saya menggunakan metode ini:
Itu akan mencoba untuk terhubung ke situs web terkenal dan jika itu dapat terhubung ke sana maka kita akan menganggap ada internet.
sumber
Saya membutuhkan bantuan dengan pertanyaan yang sama, dan saya mendapatkan jawaban saya seperti ini:
sumber
nm-online
perintah ... Ini akan mengembalikan 0 jika semuanya baik-baik saja. Biasa di semuaUNIX
kerang.Memeriksa apakah Internet berfungsi tidak sepele. ping adalah ICMP, jadi mungkin berfungsi bahkan jika proxy web sedang down. Hal serupa terjadi dengan DNS jika Anda menguji dengan IP.
Karena koneksi internet saya tidak stabil saya membuat skrip ini ( berdasarkan yang ini ) yang membuat suara chord yang lembut untuk memanggil saya, dan juga menggunakan Ubuntu memberitahukan ketika koneksi internet kembali:
sumber
Saya sedang mencari skrip yang akan terus menguji koneksi internet saya, yang akan dimulai setiap kali server saya aktif dan saya membuat ini:
Pertama, instal fping
Buat skrip init di folder /etc/init.d dengan konten berikut (saya menyebutnya testcon)
Buat skrip di folder /etc/init.d dengan konten berikut (saya menyebutnya testcond)
Kemudian saya menjalankan perintah di bawah ini untuk menambah start-up:
Mulai ulang
sumber
Saya dihadapkan dengan kotoran acak koneksi Wi-Fi oleh
Broadcom BCM94331CD
chip saya . Saya membuat skrip bash berikut (infinite loop) memeriksa setiap detik jika koneksi Internet Wi-Fi aktif dan berjalan. Baris perintah lain yang diusulkan di sini akan menunggu setidaknya 5 hingga 10 detik sebelum ditutup dengan status yaituping
. Sementara itu saya mencari solusi yang pasti juga.Dari hasil di askubuntu, saya harus membersihkan
bcmwl-kernel-source
paket yang saya gunakanfirmware-b43-installer
danb43-fwcutter
.Terima kasih semuanya atas saran mereka (di atas).
Skrip ini perlu ditambahkan dalam Program Start-Up dan tidak perlu
super user
hak istimewa untuk berjalan juga.sumber