मैं कनेक्टिविटी का निर्धारण करने के लिए उपयोग करने के खिलाफ अत्यधिक सलाह देता हूं ping
। अपने नेटवर्क से उत्पन्न होने वाले पिंग बाढ़ हमलों के बारे में चिंताओं के कारण ICMP (प्रोटोकॉल का उपयोग करता है) को अक्षम करने वाले बहुत से नेटवर्क व्यवस्थापक हैं ।
इसके बजाय, मैं एक पोर्ट पर एक विश्वसनीय सर्वर के त्वरित परीक्षण का उपयोग करता हूं जिसे आप खोलने की उम्मीद कर सकते हैं:
if nc -zw1 google.com 443; then
echo "we have connectivity"
fi
इस का उपयोग करता है netcat ( nc
) ने अपने में बंदरगाह स्कैन मोड, एक त्वरित प्रहार ( -z
है शून्य आई / ओ मोड [स्कैनिंग के लिए इस्तेमाल किया] एक त्वरित टाइमआउट (साथ) -w 1
प्रतीक्षा करता है ज्यादा से ज्यादा एक सेकंड)। यह पोर्ट 443 (HTTPS) पर Google की जाँच करता है।
मैंने HTTP के बजाय HTTPS का उपयोग कैप्टिव पोर्टल्स और पारदर्शी परदे के पीछे की रक्षा के प्रयास के रूप में किया है जो किसी भी होस्ट के लिए पोर्ट 80 (HTTP) पर जवाब दे सकता है। पोर्ट 443 का उपयोग करते समय यह कम संभावना है क्योंकि एक प्रमाणपत्र बेमेल होगा, लेकिन यह अभी भी होता है।
यदि आप खुद को उसके खिलाफ प्रमाणित करना चाहते हैं, तो आपको कनेक्शन पर सुरक्षा को मान्य करना होगा:
test=google.com
if nc -zw1 $test 443 && echo |openssl s_client -connect $test:443 2>&1 |awk '
handshake && $1 == "Verification" { if ($2=="OK") exit; exit 1 }
$1 $2 == "SSLhandshake" { handshake = 1 }'
then
echo "we have connectivity"
fi
यह एक कनेक्शन के लिए जाँच करता है (बजाय खुलने के समय खुलने का इंतज़ार करने के बजाय) और फिर सत्यापन चरण में SSL हैंडशेक करता है। यह चुपचाप बाहर निकलता है ("सच") यदि सत्यापन "ओके" था या फिर एक त्रुटि ("गलत") से बाहर निकलता है, तो हम खोज की रिपोर्ट करते हैं।
$ ethtool <dev> | awk '$0 ~ /link detected/{print $3}'