2010-05-27 18 views
10

Internet'in kurulu olup olmadığını her dakika kontrol edip bir cronjob koymak için bir Bash (veya düz kabuk) komut dosyasına ihtiyacım var. Bash komut dosyası (daha fazla veya daha az) Internet'in kapalı olup olmadığını güvenilir bir şekilde kontrol edin

#! /bin/sh 

host1=google.com 
host2=wikipedia.org 
curr_date=`date +"%Y%m%d%H%M"` 

echo -n "${curr_date};" 
((ping -w5 -c3 $host1 || ping -w5 -c3 $host2) > /dev/null 2>&1) && 
echo "up" || (echo "down" && exit 1) 

bunu nasıl yapacağını:

Bu nasıl yaptığımı mı? Hangi ev sahibi ping yaparsın?

Açıklamalar: By

  • "internet yukarı olan" Ben benim internet bağlantısı anlamına gelir. " yukarı" ile

  • , ben kullanılabilir bağlantısı olması demek (biz DNS sisteminin arızalı veya bağlantı [zaman aşımı için zihni -w] gerçekten gerçekten yavaş bahsediyoruz eğer gerçekten önemli değil). Bu yüzden de herhangi bir IP'yi değil, yalnızca ana bilgisayarı eklemedim.

Ayrıca Yığın Taşması'na ping mi yapmalıyım? Yani, Google, Wikipedia veya Yığın Taşması'na erişemezsem, İnternet'i istemiyorum: p

+0

Google I bir bağlantı var diye hep test etmek kullandığınız yöntemdir. –

+0

8.8.8.8 özellikle çok noktaya yayın olduğundan iyi olurdu. –

+6

İnternet bir bütün olarak genellikle "yukarı" dir. Ancak, bununla bağlantınız olmayabilir! ;-) –

cevap

5

Bu iyi bir çözüm gibi görünüyor. Sadece birkaç ana bilgisayar ve belki de bazı saf IP ana bilgisayarları ekleyin, böylece DNS işlevine güvenmeyin (kendi içinde "up" tanımınıza bağlıdır).

+1

Aslında DNS işlevine bağlı olarak iyi bir şey olabilir. Eğer fiili “İnternette normal gibi gözükürüm” şeklinde kontrol etmek istiyorsanız, DNS desteği gerektiren A Good Thing (TM). –

1

Internet bağlantınızın hangi bölümünü kontrol etmek istiyorsunuz? DHCP? DNS? Fiziksel olarak bir fişe takılı mı? Çekirdek NIC'nin varlığını kabul ediyor mu?

ISS'nizin DNS sunucularını/sunucularını host(1) komutunu kullanarak el ile sorgulayabilirsiniz. Bu genellikle yönlendiricinizin ISS ile bağlantısını kesip kaybetmediğinin iyi bir göstergesidir.

Çekirdeğinizin hangi arabirimlerini netstat(8) veya ifconfig(8) kullanarak sorgulayabilirsiniz.

ifstat kullanarak arabirim hakkında ayrıntılı istatistikler alabilirsiniz. , O inşaat büyük kodunuz için

4

sayesinde onun tek bir satır aslında bıraktım:

((ping -w5 -c3 8.8.8.8 || ping -w5 -c3 4.2.2.1) > /dev/null 2>&1) && echo "up" || (echo "down" && exit 1) 
İlgili konular