এই বিষয়ে কয়েকটি উপায় আছে, আমি খুব সাধারণ বাশ স্ক্রিপ্ট লিখেছি যে আপনি কেবি পি / এস-তে গতি পর্যবেক্ষণ করতে পছন্দসই ইন্টারফেসের জন্য ব্যবহার করতে পারেন , যখন ডাউনলোডের গতি সর্বনিম্নের নিচে নেমে যায় (যা আপনি সেট করতে পারেন) তারপর, আপনার কম্পিউটার শাটডাউন হতে হবে।
এখানে কিছু বিষয় মনে রাখতে হবে:
এটি একটি বাশ স্ক্রিপ্ট যা আমি দ্রুত একসাথে রেখেছি, একই ফলাফলটি অর্জনের জন্য বিভিন্ন কৌশল রয়েছে, তবে এটি বোঝার এবং বাস্তবায়নের পক্ষে এটি সহজ easy
আপনাকে ক্রোন থেকে বাশ স্ক্রিপ্টটি রুট হিসাবে কার্যকর করতে হবে , তার অর্থ আপনাকে রুট ব্যবহারকারী হিসাবে ক্রোন খুলতে হবে এবং পছন্দসই হিসাবে ক্রোনজব যুক্ত করতে হবে। মূলের ক্রোনটিতে এটি থাকা দরকার কারণ হ'ল আপনি রুট না হয়ে কমান্ড লাইন থেকে আপনার কম্পিউটারটি বন্ধ করতে পারবেন না এবং আপনি কীবোর্ড থেকে দূরে থাকাকালীন আপনি sudo ব্যবহার করতে পারবেন না। এর চারপাশে যাওয়ার উপায় আছে তবে আমি এটি যথাসম্ভব সহজ রাখার চেষ্টা করছি।
আমি ইফস্ট্যাট নামে একটি লিনাক্স সরঞ্জাম ব্যবহার করি , সুতরাং আপনাকে এটি ইনস্টল করতে হবে অন্যথায় স্ক্রিপ্টটি কাজ করবে না:
sudo apt-get install ifstat
2 টি অপশন রয়েছে যা আপনি নীচে স্ক্রিপ্টে সংশোধন করতে পারবেন, ইন্টারফেস এবং এমএএসএসপিইডি । ইন্টারফেসটি আপনাকে যে ইন্টারফেসটি ডাউনলোড করতে ব্যবহার করছেন তা সেট করতে হবে, হয় আপনার ওয়্যার্ড ডিভাইসের জন্য ইথ0 অথবা আপনার ওয়্যারলেস ডিভাইসের জন্য wlan0, আপনি কোন ইন্টারফেস উপলব্ধ তা দেখতে আপনি কমান্ড লাইন থেকে ifconfig কমান্ডটি ব্যবহার করতে পারেন । MIN_SPEED কাঙ্ক্ষিত, আমার উদাহরণে আমি এটা সংখ্যা সেট সেট করা হয় 5 , যার মানে যে আমার ডাউনলোডের গতি হলে কম প্রতি সেকেন্ডে 5 কিলোবাইট তারপর আমার কম্পিউটার ইচ্ছা শাটডাউন।
সর্বশেষে, স্ক্রিপ্ট উপর উন্নত করতে আমরা ব্যবহার করতে পারে যখন লুপ এবং সময় একটি নির্দিষ্ট সময়কাল ধরে ডাউনলোডের গতি পরীক্ষা করুন এবং যদি গড় সর্বনিম্ন চেয়ে কম হয় আমরা হরতাল, সেইসাথে একটি পরিসেবা হিসাবে স্ক্রিপ্টটি রান করবে, এই একটি হল সমস্যাটির কাছে যাওয়ার আরও সঠিক উপায় এবং আমি আপনাকে এটির জন্য সহায়তা করতে খুশি হব যদি আপনি এই পথটি অনুসরণ করতে চান তবে।
আপনার কম্পিউটারে আপনার পছন্দের ডিরেক্টরিতে একটি ফাইলের জন্য নীচের কোডটি অনুলিপি করুন এবং আটকান, উদাহরণস্বরূপ, i_speed.sh , অতঃপর, খুব গুরুত্বপূর্ণ, কমান্ড লাইন থেকে এই ফাইলটি সম্পাদনযোগ্য করুন , যদি আপনার ফাইলকে i_speed.sh বলা হয় নিম্নরূপ:
chmod +x i_speed.sh
এখন আপনি sudo -i রুট করতে এবং আপনার ইচ্ছা অনুযায়ী সময়ক্রমে স্ক্রিপ্ট কল করতে আপনার ক্রোনজব সেটআপ করতে পারেন।
আই_স্পিড.শ নামক কোনও ফাইলে কপি এবং পেস্ট করার কোড:
#!/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
হালনাগাদ
আমি উপরের বাশ স্ক্রিপ্টের আপডেট হিসাবে একটি ছোট অজগর প্রোগ্রাম লিখেছি যা আপনাকে নির্দিষ্ট সময়কালে গড়ে নূন্যতম গতি পেতে পুনরায় চেষ্টা এবং অন্তর হিসাবে অতিরিক্ত ভেরিয়েবল সেট করতে দেয়। আরও আপডেটগুলি এই প্রোগ্রামের জন্য একটি জিইউআই অন্তর্ভুক্ত করবে। নীচের কোডটি কেবল একটি ফাইলটিতে অনুলিপি করুন এবং আটকান, উদাহরণস্বরূপ নীচে 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()