কোনও নেটওয়ার্ক ট্র্যাফিক নেই যখন শাটডাউন সিস্টেমের সরঞ্জাম to


13

আমি কোনও স্ক্রিপ্ট বা একটি সরঞ্জাম খুঁজছি যা আমি চালু করতে পারি, যখন প্রয়োজন হয়, যা আমার কম্পিউটারটি বন্ধ করে দেয় যদি উদাহরণস্বরূপ 10 মিনিটের জন্য কোনও নেটওয়ার্ক ট্রাফিক না থাকে, বা উদাহরণস্বরূপ 100kb এর নিচে।

স্বয়ংক্রিয় ডাউনলোড করার জন্য সত্যই কাজে লাগবে। আমি জানি এটির ডাউনসাইড রয়েছে, ইন্টারনেট সংযোগ ঝুলছে, ডাউনলোড প্রোগ্রাম হ্যাং করছে, সুতরাং আপনার যদি আরও ভাল ধারণা থাকে তবে দয়া করে আমাকে বলুন।

আগাম ধন্যবাদ.

উত্তর:


15

এই বিষয়ে কয়েকটি উপায় আছে, আমি খুব সাধারণ বাশ স্ক্রিপ্ট লিখেছি যে আপনি কেবি পি / এস-তে গতি পর্যবেক্ষণ করতে পছন্দসই ইন্টারফেসের জন্য ব্যবহার করতে পারেন , যখন ডাউনলোডের গতি সর্বনিম্নের নিচে নেমে যায় (যা আপনি সেট করতে পারেন) তারপর, আপনার কম্পিউটার শাটডাউন হতে হবে।

এখানে কিছু বিষয় মনে রাখতে হবে:

  • এটি একটি বাশ স্ক্রিপ্ট যা আমি দ্রুত একসাথে রেখেছি, একই ফলাফলটি অর্জনের জন্য বিভিন্ন কৌশল রয়েছে, তবে এটি বোঝার এবং বাস্তবায়নের পক্ষে এটি সহজ 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()

ধন্যবাদ! আমি যা চেয়েছিলাম ঠিক তাই! আমি আগামীকাল এটি চেষ্টা করব, এখনই মিসস পেয়েছি এবং সে কিছুটা লিনাক্সফ্রি সময় চায় ... তবে আমি যে স্ক্রিপ্টটি সন্ধান করছিলাম তা চালিয়ে যায়। ধন্যবাদ
সিরকেটর

আরে মানুষ:) দুঃখিত যে আমি এর আগে জবাব না দিয়েছি তবে এটি পরীক্ষা করার মতো সময় পাইনি। তবে এটি কাজ করছে:) আমি স্ক্রিপ্টটি সম্পর্কে আরও কিছু ভেবেছিলাম, এটি কি কিছুটা আলাদা হয় তাই এটি প্রোগ্রাম করা সম্ভব হবে? স্ক্রিপ্টটি প্রারম্ভকালে শুরু হওয়ার পরে এটি দুর্দান্ত হবে, তারপরে ডেস্কটপে একটি সামান্য উইন্ডো দেখায়, যা বলে: "আপনার স্ক্রিপ্টটি থামাতে চাইলে" না "উদাহরণস্বরূপ প্রবেশের জন্য 3 মিনিট সময় রয়েছে, অন্যথায় এটি যদি পিসি বন্ধ করে দেয় তবে সেখানে কোনও নেটওয়ার্ক ট্র্যাফিক (বা কোনও কিছুর নীচে) যেমন 5 মিনিটের সময়কালের জন্য নয় ""
সিরকেটর

এইভাবে আমি প্রতিটি স্টার্টআপে ক্রোনটির মাধ্যমে স্ক্রিপ্টটি শুরু করতে পারতাম তবে আমি যদি শারীরিকভাবে পিসিতে থাকি এবং আমি চাই না যে স্ক্রিপ্টটি চালিত হয় আমি সহজেই এটি অক্ষম করতে পারি। এবং যদি এটির নির্ধারিত অটোস্টার্টটি কেবল ডাউনলোড করার জন্য সকাল। টায় বলতে দেয় তবে এটি 3 মিনিট গুনবে এবং তারপরে "যান এবং মনিটরের মোডে" স্ক্রিপ্টটি সেট করে। এছাড়াও স্ক্রিপ্টটি সর্বদা চলমান থাকা এবং চেক করা চালানো সম্ভব বা আমি কেবল এটি চালাতে পারি যেমন ক্রোন দিয়ে প্রতি মিনিটে এবং কোনও নেটওয়ার্ক ট্রাফিকের জন্য এটি পরীক্ষা করতে দেওয়া উচিত? আপনাকে
আবারও

@ সিরকেটর আমি আনন্দিত এটি আপনার জন্য কাজ করছে। অবশ্যই, এই সমস্ত অপশনগুলি সম্ভব এবং সম্ভবত এটি করার পক্ষে সঠিক উপায়। আমি আরও অফিসিয়াল প্রোগ্রাম লিখে খুশি হব তবে এতে আরও কিছুটা সময় লাগবে। একবার আমার কিছু জায়গায় এলে আমি আপনাকে পরীক্ষা দিতে দেব।
কিংমিলো

বিশ্বের সমস্ত সময় নিন, আমি এই ভেবে খুশি যে আপনি আপনার ফ্রিটাইমে আমাদের জন্য কিছু বানাচ্ছেন। খুব বেশি প্রশংশিত! :)
সিরকেটর

3

আমি এই বিষয়টি খুব সহায়ক বলে মনে করেছি। পাইথনের কোনও জ্ঞান ছাড়াই আমি গড় নেটওয়ার্ক গতি পেতে উপরের স্ক্রিপ্টটি আপডেট করেছি এবং যদি গড় গতি ন্যূনতম গতির চেয়ে বেশি হয় তবে দীর্ঘ ঘুমের জন্য যেতে পারি। দীর্ঘ ঘুমের গণনাগুলি পুনরায় সেট করার পরে আবার গড় গতি গণনা করা হয়।

## Download Monitor v0.2 - June 2017

# Set the interface you wish to monitor, eg: eth0, wlan0, usb0
INTERFACE = "enp4s0"

# Set the minimum download speed in KB/s that must be achieved.
MINIMUM_SPEED = 10

# Set the number of retries to test for the average minimum speed.
RETRIES = 5

# Set the interval (in seconds), between retries to calculate average speed.
INTERVAL = 5

# Set the interval (in seconds), between recalculating average speed
LONG_INTERVAL = 600

import os, time
from commands import getoutput

def worker ():
    RETRIES_COUNT = 1
    SPEED = 0
    while True:
        # Sum downstream and upstream and add with previous speed value
        # {print $1} use just downstream
        # {print $2} use just upstream
        # {print $1+$2} use sum of downstream and upstream
        SPEED += int(float(getoutput("ifstat -i %s 1 1 | awk '{print $1+$2}' | sed -n '3p'" % INTERFACE)))

        if RETRIES_COUNT > RETRIES:
            # Calculate average speed from all retries
            AVG_SPEED = int(float(SPEED) / float(RETRIES_COUNT))

            # If average speed is below minimum speed - suspend
            if AVG_SPEED < MINIMUM_SPEED:
                os.system("shutdown -h now")
            # Else reset calculations and wait for longer to retry calculation
            else:
                RETRIES_COUNT = 1
                SPEED = 0
                time.sleep(LONG_INTERVAL)
        else:
            RETRIES_COUNT += 1
            time.sleep(INTERVAL)

worker()

অসাধারণ. সুতরাং এর অর্থ এই ক্রোনজব কেবল একবার শুরু করা উচিত, তাই না?
বেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.