इंटरनेट कनेक्शन विफल होने की जाँच करने के लिए मेरा कोड क्यों है?


1

मैं एक स्क्रिप्ट को संपादित करने की कोशिश कर रहा हूं ताकि वह अपने बाकी कमांड्स को निष्पादित करने से पहले इंटरनेट कनेक्शन के लिए जांच करेगी, लेकिन समस्या यह है कि कोई भी परिणाम मैं (ऑनलाइन या नहीं) की कोशिश करता हूं, जवाब हमेशा 0 होता है, मैंने प्रदान किया कोड है कि मैं नीचे उम्मीद के साथ आया था कि कोई इसे देख सकता है और अपनी दुर्दशा को हल करने के बारे में कुछ विचार दे सकता है। मैंने सभी समान परिणामों के साथ कई तरीके आज़माए हैं। यदि आवश्यक हो तो मैं अधिक कोड या अपने कंप्यूटर की जानकारी प्रदान कर सकता हूं।

[रूट @ MercadesBendz MyWirelessCard] # परीक्षण = $ (पिंग -सी १ .1४.१२५.२१.४.2) [   $ TEST & gt; / देव / null 2 ​​& gt; & amp; 1] & amp; & amp; गूंज 1 || प्रतिध्वनि ०

0


क्या ओएस? लिनक्स?
Moab

हां: लिनक्स 4.4.8-300.fc23.x86_64 GNU / लिनक्स
Purpe_Fedora

जवाबों:


1

समस्या यह है कि पिनक-सी 1 74.125.21.147 का परिणाम एक संख्या नहीं है - परिणाम के साथ इसकी स्ट्रिंग - और फिर आप इसकी जाँच कर रहे हैं कि क्या यह अशक्त है या नहीं - लेकिन इसकी कभी अशक्त नहीं है, क्योंकि यह रिपोर्ट की परवाह किए बिना वापस आ जाएगी विफलता।

मैंने चारों ओर खेला, और इसे थोड़ा संशोधित किया - यह कम सुरुचिपूर्ण है, लेकिन मेरे लिए काम करता है:

 TEST=$(ping -c 1 74.125.21.14|wc -l);  [ $TEST -gt 5 2>&1 ] && echo 1 || echo 0

यहां विचार यह है कि परीक्षण अब लाइनों की संख्या की गणना करता है। 5 परिणामों की पंक्तियाँ विफलता को इंगित करती हैं, 6 या अधिक एक पास को इंगित करता है। पिंग की संख्या और आपके द्वारा गणना की जाने वाली लाइनों की संख्या को बढ़ाकर आप इसे और अधिक मजबूत बना सकते हैं, जो पैकेट के कुछ स्तर के नुकसान के लिए भी जिम्मेदार हो सकते हैं।

अन्य विकल्प हैं - उदाहरण के लिए, लाइनों की संख्या गिनने के बजाय, आप कुछ ऐसा कर सकते हैं | पूंछ -2 | सिर -1 | cut -f4 प्राप्त पैकेट की संख्या प्राप्त करने के लिए।


सलाह के लिए धन्यवाद। मैंने संशोधित कोड की कोशिश की और यह वास्तव में काम किया। हाँ, मैं सुरुचिपूर्ण नहीं लग रहा हूँ क्योंकि यह मेरे लिए एक व्यक्तिगत स्क्रिप्ट में जा रहा है :) :)
Purpe_Fedora

अरे जब से यह काम करता है, अगर कोई इंटरनेट उपलब्ध नहीं है तो स्क्रिप्ट से बाहर निकलना संभव है? मैंने एक तरीका आजमाया, लेकिन इंटरनेट कनेक्शन होने पर भी यह मेरी स्क्रिप्ट से बाहर रहा? #Check internet availablity TEST=$(ping -c 1 74.125.21.14|wc -l) [ $TEST -gt 5 2>&1 ] || exit
Purpe_Fedora

बल्कि इसके बाद [$ TEST ... का उपयोग क्यों न करें अगर इसे [$ TEST -gt 5] में तब और किसी कथन के साथ परिवर्तित किया जाए? वैकल्पिक रूप से, स्क्रिप्ट को 2 भागों में विभाजित करें, और उसके बाद एक दूसरी स्क्रिप्ट को कॉल करें
davidgo

उम अच्छी तरह से मैंने भी कोशिश की, मुझे विश्वास है, एक और स्क्रिप्ट में: #Check internet availablity TEST=$(ping -c 1 74.125.21.14|wc -l) if [ $TEST -gt 5 2>&1 ] then sudo dnf install gcc kernel-devel binutils cpp glibc-devel glibc-headers isl kernel kernel-headers libmpc else echo "No Internet Connection Available! Installing RPMs manuely." arr=(*.rpm) for (( i=0; i<${#arr[@]}; i++ )); do echo " ${arr[$i]} " dnf -y install ${arr[$i]} done #exit is commented out because it always closed my script #exit fi;
Purpe_Fedora

कृपया इसे एक और प्रश्न के रूप में पोस्ट करें (और लिंक के साथ टिप्पणी करें) ताकि मैं आगे की मदद कर सकूं, इसके बिना प्रारूपण के मुश्किल, और वास्तव में एक अलग समस्या है। इसके अलावा, क्या आप स्क्रिप्ट को परिभाषित कर सकते हैं - क्या आप कमांड लाइन से पूरी चीज़ को चलाने की कोशिश कर रहे हैं, या व्हाटट का क्या मतलब है) बाहर निकलने पर टिप्पणी की जाती है क्योंकि यह हमेशा मेरी स्क्रिप्ट को बंद करता है)
davidgo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.