Saya menemukan skrip yang mengatakan mereka memeriksa konektivitas internet. Beberapa memeriksa alamat IP jika antarmuka sudah habis, tetapi tidak memeriksa konektivitas internet. Saya menemukan beberapa yang menggunakan ping seperti ini: if [ 'ping google.com -c 4 | grep time' != "" ]; then
tetapi kadang-kadang ini mungkin tidak dapat diandalkan karena ping itu sendiri mungkin hang untuk beberapa alasan (misalnya menunggu beberapa IO macet).
Adakah saran tentang cara yang tepat / andal untuk memeriksa konektivitas internet menggunakan skrip? Apakah saya harus menggunakan beberapa paket?
Perlu untuk dapat memeriksa secara berkala dengan cron
misalnya, kemudian, lakukan sesuatu ketika koneksi turun seperti memanggilifup --force [interface]
$ ethtool <dev> | awk '$0 ~ /link detected/{print $3}'
>/dev/null
>/dev/null
mengarahkan output standar ke/dev/null
, perangkat null , yang membuangnya karena tidak diinginkan dalam kasus ini (yang kami pedulikan hanyalah nilai keluar dari perintah). Sebagai gantinya, output yang lebih berlaku diambil dariecho
jalur.Saya sangat merekomendasikan untuk tidak menggunakan
ping
konektivitas. Ada terlalu banyak admin jaringan yang menonaktifkan ICMP (protokol yang digunakannya) karena kekhawatiran tentang serangan banjir ping yang berasal dari jaringan mereka.Sebagai gantinya, saya menggunakan tes cepat dari server yang andal pada port yang bisa Anda buka:
Ini menggunakan netcat (
nc
) dalam mode pemindaian port -nya , tusukan cepat (-z
adalah mode nol-I / O [digunakan untuk memindai] ) dengan batas waktu cepat (-w 1
menunggu paling banyak satu detik). Ia memeriksa Google di port 443 (HTTPS).Saya telah menggunakan HTTPS daripada HTTP sebagai upaya untuk melindungi dari portal captive dan proxy transparan yang dapat menjawab pada port 80 (HTTP) untuk host mana pun. Ini lebih kecil kemungkinannya ketika menggunakan port 443 karena akan ada ketidaksesuaian sertifikat, tetapi itu masih terjadi.
Jika Anda ingin membuktikan diri terhadap hal itu, Anda harus memvalidasi keamanan pada koneksi:
Ini memeriksa koneksi (daripada menunggu openssl untuk kehabisan waktu) dan kemudian membuat jabat tangan SSL, dengan mengetik pada fase verifikasi. Diam-diam keluar ("benar") jika verifikasi "OK" atau yang keluar dengan kesalahan ("salah"), maka kami melaporkan temuan tersebut.
sumber
-d
misalnyanc -dzw1
juga sehingga tidak mendengarkan STDIN dan menggantung tanpa batas dalam sebuah skrip. dan mungkin menggunakan 8.8.8.8 sebagai ganti google.com untuk menyimpan pencarian.nc -dzw1 8.8.8.8 443
-d
dalam skrip saya, mungkin karena saya tidak pernah memiliki saluran pipa yang tidak digunakan. Itu harus aman untuk ditambahkan.-w 1
masih memerlukan biaya satu detik ketika tidak ada konektivitas, meskipun mungkin Andanc
memiliki semacam masalah yang tidak jelas di suatu tempat. Jika Anda memiliki versi terbaru dari nmap yang diinstal, Anda dapat melakukannyancat --send-only --recv-only -w 334ms
untuk memotong waktu kegagalan menjadi sepertiga darinc
(Saya telah menemukan bahwa 334ms adalah waktu tunggu yang baik).Saya membuat skrip yang menggunakan banyak cara untuk memeriksa koneksi internet (ping, nc, dan curl, terima kasih kepada Adam Katz, Gilles, dan Archemar). Saya harap seseorang menemukan ini berguna. Anda bebas mengeditnya sesuai keinginan / mengoptimalkannya.
Periksa gateway, DNS, dan koneksi internet Anda (menggunakan curl, nc, dan ping). Masukkan ini ke dalam file kemudian buat itu dapat dieksekusi (Biasanya
sudo chmod +x filename
)sumber
$GW
?/sbin/ip route | awk '/default/ { print $3 }'
dapatkan alamat gateway dari antarmuka utama (semoga). Jika ingin, Anda dapat mengatur sendiri alamat IP gateway.ada banyak IP di internet, pendekatan yang mudah adalah dengan melakukan ping beberapa diantaranya
jawaban yang lebih lengkap mungkin menggunakan halaman
wget
dimana
sumber
terima kasih atas kontribusi Anda dari setiap pengguna dan web lainnya, saya berhasil menyelesaikan skrip ini dalam 3 hari. dan saya akan membiarkannya gratis untuk penggunaannya.
skrip ini mengotomatiskan pembaruan alamat ip ketika koneksi terputus, ia melakukannya terus-menerus.
pastebin: https://pastebin.com/wfSkpgKA
sumber
eth0
, tetapi ini tidak disebutkan.) (2) Menggunakan Bahasa Inggris. (3) Menempatkan semua variabel shell (misalnya"$HOST"
,,"$LINE1"
dan"$LOG"
) ke dalam tanda kutip ganda. (4) Baik diaturLINE2
atau tidak menggunakannya. (Saya curiga bahwa AndaLINE1
/LINE2
bingung denganinet4
/inet6
.) ... (Lanjutan)