इसके बारे में जाने के कुछ तरीके हैं, मैंने एक बहुत ही सरल बैश स्क्रिप्ट लिखी है जिसका उपयोग आप वांछित इंटरफ़ेस के लिए KB p / s में गति की निगरानी के लिए कर सकते हैं , जब डाउनलोड की गति न्यूनतम से कम हो जाती है (जिसे आप सेट कर सकते हैं) , तो आपका कंप्यूटर बंद हो जाएगा।
यहाँ ध्यान रखने योग्य कुछ बातें हैं:
यह एक बैश स्क्रिप्ट है जिसे मैंने जल्दी से एक साथ रखा है, एक ही परिणाम प्राप्त करने के लिए कई अलग-अलग तकनीकें हैं, हालांकि यह समझने और लागू करने के लिए एक आसान है।
आपको क्रॉन से रूट के रूप में बैश स्क्रिप्ट को निष्पादित करने की आवश्यकता होगी , इसका मतलब है कि आपको रूट उपयोगकर्ता के रूप में क्रोन खोलने और वांछित के रूप में क्रोनजोब जोड़ने की आवश्यकता है। इसकी जड़ के क्रोन में होने का कारण यह है कि आप अपने कंप्यूटर को कमांड लाइन से रूट किए बिना बंद नहीं कर पाएंगे, और कीबोर्ड से दूर रहने पर आप sudo का उपयोग नहीं कर सकते। इसके आसपास आने के रास्ते हैं लेकिन मैं इसे यथासंभव सरल रखने की कोशिश कर रहा हूं।
मैं ifstat नामक एक लिनक्स टूल का उपयोग करता हूं , इसलिए आपको इसे स्थापित करने की आवश्यकता होगी अन्यथा स्क्रिप्ट काम नहीं करेगी:
sudo apt-get install ifstat
2 विकल्प हैं जिन्हें आप नीचे दी गई स्क्रिप्ट, INTERFACE और MIN_SPEED में संशोधित कर सकते हैं । इंटरफ़ेस जिसे आप डाउनलोड करने के लिए उपयोग कर रहे हैं, आपके वायरलेस डिवाइस के लिए eth0 या वायरलेस डिवाइस के लिए wlan0 के लिए सेट करने की आवश्यकता है, आप कमांड लाइन से ifconfig कमांड का उपयोग करके देख सकते हैं कि आपके पास क्या इंटरफेस है। MIN_SPEED को वांछित के रूप में सेट किया गया है, मेरे उदाहरण में मैंने इसे 5 नंबर पर सेट किया है , जिसका अर्थ है कि यदि मेरी डाउनलोड गति 5 KB प्रति सेकंड से कम है तो मेरा कंप्यूटर बंद हो जाएगा।
अंत में, स्क्रिप्ट पर सुधार करने के लिए हम थोड़ी देर के लूप का उपयोग कर सकते हैं और समय की एक निर्दिष्ट अवधि में डाउनलोड गति की जांच कर सकते हैं और यदि औसत न्यूनतम से कम है तो हम बंद कर देंगे, साथ ही स्क्रिप्ट को सेवा के रूप में चलाएंगे, यह एक है समस्या के समीप आने का अधिक सटीक तरीका और मुझे आपकी मदद करने में खुशी होगी यदि यह वह मार्ग है जिसका आप अनुसरण करना चाहते हैं।
अपने कंप्यूटर पर अपनी पसंद की निर्देशिका में एक फ़ाइल में नीचे दिए गए कोड को कॉपी और पेस्ट करें, उदाहरण के लिए i_speed.sh , फिर, बहुत महत्वपूर्ण, फ़ाइल को निष्पादन योग्य बनाएं , कमांड लाइन से ऐसा करने के लिए, यदि आपकी फ़ाइल को i_speed.sheed कहा गया था निम्नलिखित नुसार:
chmod +x i_speed.sh
अब आप समय-समय पर स्क्रिप्ट को कॉल करने के लिए अपने क्रोनजोब को रूट और सेटअप कर सकते हैं, जिसे आप चाहते हैं।
I_speed.sh नामक फ़ाइल में कॉपी और पेस्ट करने के लिए कोड:
#!/bin/bash
# Bash script to determine a network interfaces current transfer speed and
shutdown the computer if the current transfer speed is less than MIN_SPEED
# Set INTERFACE to the network interface you would like to monitor
INTERFACE='wlan0'
# Set MIN_SPEED in KB per second that network interface (INTERFACE) speed
must be larger than, if speed falls below this number then computer will shutdown.
MIN_SPEED=5
# This is where the work get's done:
CURRENT_SPEED=`ifstat -i $INTERFACE 1 1 | awk '{print $1}' | sed -n '3p'`
INT=${CURRENT_SPEED/\.*}
if [ $INT -lt $MIN_SPEED ]; then
shutdown -h now
else
exit
fi
अपडेट करें
मैंने बैश लिपि के अद्यतन के रूप में एक छोटा सा अजगर कार्यक्रम लिखा था, जिससे आप एक निश्चित समय में एक औसत न्यूनतम गति प्राप्त करने के लिए अतिरिक्त चर जैसे कि रिट्रीज़ और अंतराल सेट कर सकते हैं। इस कार्यक्रम के लिए आगे के अपडेट में GUI शामिल होगा। बस एक फ़ाइल में नीचे दिए गए कोड को कॉपी और पेस्ट करें, उदाहरण के लिए download_monitor.py
इसे निम्नानुसार चलाएंsudo python download_monitor.py
## Download Monitor v0.1 - March 2012
# Set the interface you wish to monitor, eg: eth0, wlan0, usb0
INTERFACE = "eth0"
# Set the minimum download speed in KB/s that must be achieved.
MINIMUM_SPEED = 15
# Set the number of retries to test for the average minimum speed. If the average speed is less
# than the minimum speed for x number of retries, then shutdown.
RETRIES = 5
# Set the interval (in seconds), between retries to test for the minimum speed.
INTERVAL = 10
import os, time
from commands import getoutput
def worker ():
RETRIES_COUNT = RETRIES
while True:
SPEED = int(float(getoutput("ifstat -i %s 1 1 | awk '{print $1}' | sed -n '3p'" % INTERFACE)))
if (SPEED < MINIMUM_SPEED and RETRIES_COUNT <= 0):
os.system("shutdown -h now")
elif SPEED < MINIMUM_SPEED:
RETRIES_COUNT -= 1
time.sleep(INTERVAL)
else:
RETRIES_COUNT = RETRIES
time.sleep(INTERVAL)
worker()