Баш на скрипти: Автоматски контролирајте го опсегот на пренос

Здраво на сите. Ова е мојот втор пост. Јас обично не пишувам постови освен ако имам нешто добро да споделам и овој пат имам нешто што сигурно многумина ќе ги интересира.

Пред неколку месеци размислував да направам скрипта за да го ограничам опсегот на апликации, но имав некои проблеми и грешки што ми го отежнуваа, па ги покренав сомнежите во форум de <º FromLinux во случај некој да има идеја.

Затоа, го оставив некое време и еден ден решив да го продолжам сценариото. Направив многу тестирање, читав многу за баш, и имав главоболки во слободното време, но го направив тоа !!

Имам огромно задоволство и затоа решив да го споделам моето мало сценарио со вас за да можете да го користите и да го подобрите. Планирам да го лиценцирам под GPLv3, но тоа е мојот прв проект, така што не сум баш сигурен како да го направам ова (ми треба совет од кој и да го сторил тоа претходно).

Па, сега ќе објаснам што ми беше потребна и што направив за да се реши проблемот.

Ситуација
Имам Интернет план од 512Kbs, затоа користам Менувач како клиент BitTorrent за преземање големи датотеки (како LibreOffice и некои дистрибуции на GNU / Linux). Со таа брзина, преземањата траат долго и проблемот е кога се користи веб-прелистувачот Firefox: потребно е долго време да се вчита.

Кога ќе се поврзам на Интернет, го активирам временските ограничувања за испраќање и преземање и чекам да се вчита Firefox, а потоа повторно ги стартувам торентите. Како што ќе видите, да го направите ова неколку пати е мачно. Да не спомнувам дека понекогаш целосно ги паузирам сите торенти, а потоа заборавам да ги активирам повторно, што доведува до изгубено драгоцено време за поставување / преземање на торентите.

Решение
За овој проблем решив да создадам скрипта во Баш што во основа го прави следново:

1. Проверете дали Преносот работи и нема паузи на поројот. Ако е така, повторно вклучете ги поројните текови.

2. Потврдете дека Firefox работи. Потоа ги добива KB / s испратени и примени од нив и ги зачувува во датотека.

3. Ако прелистувачот префрли или преземе KB / s надминува референтен опсег, поставките за поставување / преземање на преносот се менуваат.

Ова ви овозможува кога сакате да пристапите до веб-страница, кога прелистувачот го испраќа барањето, поставувањето на датотеката за пренос е ограничено и кога се примаат податоците на страницата, преземањето е ограничено. Ова работи одлично кога пристапувате до повеќе страници одеднаш и резултатите се всушност исти како и со оневозможениот пренос.

Големата предност е што е целосно автоматски и не бара моја интервенција.

Скриптата
Иако може да се користи за контрола на потрошувачката на ширина на опсег на која било апликација, во моментот е напишано само за да се реши многу посебен проблем. Но, не е многу тешко да се направат модификации.

Барања
За да работи правилно, потребно е да ја имате апликацијата «нетогови".

Во овој случај, бидејќи скриптата работи со Firefox и Transmission, потребно е да ги инсталирате овие апликации, како додаток на „далечинскиот управувач“, што е она што ги менува вредностите за поставување и преземање на торентите. Јас исто така користам во сценариото „авк“. Јас го споменувам затоа што не знам дали сите дистрибутери го имаат инсталирано.

Користен софтвер
Список на апликации што ги користи скриптата и системот каде работи.

• Debian GNU / Linux 6.0.8
• Linux 2.6.32-5-686
• Firefox 24.0
• Пренос 2.03 (11030)
• Nethogs 0.7.0

Извршување
Мора да се изврши како корен затоа што нетогови може да се работи само со тој корисник, но пренос-далечински управувач се извршува со нормалниот корисник со помош на командата неговиот.

Скриптата ја користи внатрешната команда Баш стапица Со кои е можно да се вратат стандардните вредности на оптоварувањето / истоварувањето на преносот, кога тоа е запрено со употреба на сигналите SIGINT (CTRL + c) или SIGTERM.

Сè уште не сум сигурен како да сторам за да го стартувам при стартување и да застанам кога ќе го исклучам или рестартирам компјутерот. Размислував да ставам линк во досието / и друго / локално но не знам дали би функционирало и навистина не разбирам како / итн / работииницијал.д. (Видов неколку скрипти што се таму, дури и скелет, но не ги разбирам). Ако некој може да ми помогне, ќе бидам многу благодарен.

 

Па луѓе, тоа е тоа. Се надевам дека мојот мал придонес е корисен за вас и дека можете да го подобрите ако сакате. Beе бидам среќен да ги прочитам вашите мислења и препораки, како и предлози во случај да има безбедносни проблеми со датотеката (не сум програмер, од време на време правам само неколку работи).

Знам дека со некои поправки може да стане одлична апликација во иднина, бидејќи не знам ниту една програма што го прави истото. На пример, ми паѓа на памет дека би можел да имам графички интерфејс во живост и да можеме да ги избереме апликациите што сакаме да ги дадеме приоритет во користењето на ширина на опсег (веб прелистувач, менаџер за ажурирање, пренос на датотеки, итн.) и различните референтни вредности. Да, тоа е донекаде амбициозно, но доста корисно.

Скриптата можете да ја преземете во ставете. Ви благодарам многу за читањето !!


Содржината на статијата се придржува до нашите принципи на уредничка етика. За да пријавите грешка, кликнете овде.

23 коментари, оставете ги вашите

Оставете го вашиот коментар

Вашата е-маил адреса нема да бидат објавени. Задолжителни полиња се означени со *

*

*

  1. Одговорен за податоците: Мигел Анхел Гатон
  2. Цел на податоците: Контролирајте СПАМ, управување со коментари.
  3. Легитимација: Ваша согласност
  4. Комуникација на податоците: Податоците нема да бидат соопштени на трети лица освен со законска обврска.
  5. Складирање на податоци: База на податоци хостирани од Occentus Networks (ЕУ)
  6. Права: Во секое време можете да ги ограничите, вратите и избришете вашите информации.

  1.   елав dijo

    Ох! Интересно

    1.    елиотим3000 dijo

      Во долниот лев агол имате опција да го ограничите пропусниот опсег што Трансмисијата го троши и при поставување и преземање. Со преносот немав никаков проблем со тоа.

      1.    колаче dijo

        Но, ова е автоматски, а има и „Трансмисија“ без графички интерфејс за да не ја имате таа функција толку при рака.

      2.    Жоакин dijo

        Здраво како си.
        Да, веќе го знам тоа. Но, токму тоа не сакам да го правам.
        Имам многу лош план за интернет (512 KB и е најдобар во мојата област).

        Со моето сценарио, не се грижам да направам сè рачно. Замислете дека отворате страница во прелистувачот и „Преносот“ го окупира целиот опсег во тој момент, така што страницата трае некое време за да се вчита (најмногу 1 ′, но таа е премногу вознемирувачка). Завршив со „активирање на временски ограничувања“ на секои две минути. Ова е автоматско и скоро моментално (го проверува KB што го испраќа и прима Firefox на секои 5 секунди).

        Навистина во мојот случај со таа брзина на Интернет, таа е одлична. Исто така, не знам за друга апликација што го прави ова, инаку немаше да го стори тоа. Оние што ги видов само го ограничуваат пропусниот опсег, но не автоматски.

        Се надевам дека бев јасен. Ви благодариме што прочитавте!

        1.    Жоакин dijo

          Извинете, не бев во право. Тие не се 512KB, туку тие се Kbits. (Тоа е, 1/2 "Мега"). Максимумот што можам да го преземам е 75KB / s и 50KB / s прикачување. Тоа е кога Интернетот е во ред, инаку нормалното е 48 и 23.

    2.    Жоакин dijo

      Ви благодариме!

  2.   колаче dijo

    Интересно, јас користам qBittorrent и го користам прекинувачот за ограничувања.

    Објавувањето изгледа убаво со тие бои

    1.    Жоакин dijo

      Ви благодариме за боите. Не сум многу добар во тоа, се чини многу долго и монотоно со толку многу текст.

  3.   Jorge dijo

    Јас лично користам преносен-демон и firefox со табулатор за апликација во живо, така што не шетам со надворешни програми или заборавам да ги продолжам поројните точки или активираната желка (и можам да ја контролирам од мојот телефон). За да започнете услуга, додадете корисник (на пример: adduser –невозможена лозинка со мрежни мрежи), креирајте текстуална датотека за даемонот во /etc/init.d со име (на пр .: nethogs-daemon) и потоа во дебиан напишете " default-rc.d nethogs-daemon стандардно "така што ќе започне само по себе.

    Текстуалната датотека е исто така баш-скрипта, во која можете да ја споите вашата скрипта.
    Погледнете дали ова може да ви помогне, може да се искористи за да се започне пренос-демон, може да се користи за да се стартуваат мрежни мрежи https://trac.transmissionbt.com/wiki/Scripts/initd

    1.    Жоакин dijo

      Здраво!
      Ајде да видиме дали разбирам: ова е да се започне Преносот при стартување и да се запре при исклучување или рестартирање. Со тоа немам проблеми бидејќи секогаш започнува само по себе и започнува да се презема (го додадов на апликациите при стартување во Xfce).

      Мојот проблем е што ако ја ставам скриптата во rc.local или во init.d не знам како компјутерот ја запира скриптата. Тоа е, очигледно при исклучување / рестартирање на компјутерот, сите процеси се прекинати (а со нив и Transmission и Nethogs), но не знам што би се случило со мојата скрипта.

      И зошто тоа ми пречи? Скриптата создава датотека во / tmp и ја контролира брзината на преносот. Ако го стартувам во терминал и одеднаш го запирам (на пример со CTRL + c), скриптата пред затворање ги враќа стандардните брзини (во случај да е потребно) и потоа ги запира Nethogs и ја брише датотеката од / tmp. Се обидов да го направам што е можно „професионален“ за да не остава лабави датотеки или процеси во позадина.

      За она што го рече, не разбрав што е „табот за апликации во живо“.

      1.    Jorge dijo

        Табулаторот за апликација е трајно јазиче, тој е секогаш отворен и минимизиран во firefox http://i.imgur.com/a5i0aP3.png (контекстуално мени на јазичето, кликнете на «залепете го табулаторот»). Кога демоните испраќаат ТЕРМ сигнал, тие чекаат некое време, сè додека не ја затворат сесијата, и ги зачувуваат своите податоци. Имајте на ум дека во врската што ја дадов претходно кога излегував од скриптата повикувам старт-стоп-демон и му кажувам на преносот да запре, таму можете да залепите „killall nethogs“ и што содржи StopScript. Скриптата за иницијатива во овој случај ќе треба да ја наречете root како одреден корисник, бидејќи има потреба од привилегии.

        1.    Жоакин dijo

          Па благодарам за советот. Штом имам време, го пробам!

  4.   факундо dijo

    одлично, наидов на оваа непријатност бидејќи дури и ако имате брза врска сте принудени да го ограничите преносот додека сакате да пребарувате и со тоа да „губите“ време.
    Goingе го пробам кога можам. Поздрав и благодарност !!

    1.    Жоакин dijo

      Благодарение на тебе! Се надевам дека ова може да ви помогне!

      1.    Факундо dijo

        Здраво повторно Хоакин. Гледам дека вие се грижите да одговорите на сите коментари, така што ќе го искористам тоа и ќе ви поставам неколку дебитанти.
        Прво, како да знам дали ја имам инсталирано скриптата „awk“? Јас користам Debian 7.2.
        Второ, не знам што да правам со кодот за паста. Морам да фатам уредник за текст и да го зачувам во датотека наречена „bandwidth-controller.sh“ и потоа да ја стартувам како „./band-width-control.sh“. Ова е делот каде сум најмногу изгубен.
        Трето: Кога велите, стартувајте го како root, дали е потребно да се смени од корисник во root или со судо, нели?

        Ако имате некое читање да ми препорачате на оваа тема, јас го ценам тоа.
        Честитки!

  5.   Гискард dijo

    Затоа, јас секогаш го деинсталирам менувачот и инсталирам Deluge. Па, за тоа и уште малку работи што Deluge ми ги нуди, а другиот не ги носи.

    1.    Жоакин dijo

      Здраво, не знам Делуж. Мојот главен проблем е услугата за Интернет. Со ова го стискам во потполност.

  6.   Панда dijo

    Здраво мојот опсег е исто така ограничен, па затоа ја испробав оваа скрипта. Но, тоа не работи. грешката се чини дека е во командата nethogs -t. ја враќа грешката „Чекам да пристигне првиот пакет (видете грешка во sourceforge.net 1019381)“ и пробав нане, архлинукс и ништо. Што треба да врати таа команда? Претпоставувам дека треба да испечатам во обичен текст пропусен опсег што го користи секоја апликација. Дали знаете друга програма што ви овозможува да ја слушате мрежата?

    1.    Жоакин dijo

      Здраво како си.
      Тоа е грешка во Nethogs. И мене ми се појавува, но во секој случај работи.

      Она што го прави Nethogs е да ги прикаже процесите што трошат најмногу ширина на опсег, во реално време. Во скриптата, нејзиниот излез е зачуван во текстуална датотека "net.list", за да може да се филтрира подоцна.

      Скриптата работи само со Transmission (клиент на BitTorrent) и Firefox (веб-прелистувач). Она што го прави е да го ограничи пропусниот опсег на Transmission кога Firefox вчитува веб-страница. Треба да инсталирате: Nethogs, Пренос, Далечински пренос и Firefox.

      Сè е објаснето во објавата, па затоа не знам кој е вашиот проблем.

      ПС: Ве молиме, напишете правилно и подобрете го правописот. Тоа е коментар, а не текстуална порака.

      1.    Панда dijo

        сценариото не работи за мене. ја отпечаќа таа порака за грешка многу пати. стартувајте „nethogs -t“ во терминал за да видите што прави, но не печати ништо, само грешка. на мојот компјутер не работи. Замислувам дека треба да отпечати нешто слично на она што го печати кога се извршува без -t, покажувајќи ги процесите и ширината на опсегот. но во мојот случај не печати ништо од тоа. со кое дистрибуција се разви сценариото?

        1.    Жоакин dijo

          Ако погледнете внимателно, објавата го содржи целиот користен софтвер и неговите верзии. Не знам зошто грешката, но таа ми се појавува секој пат кога се извршува „nethogs -t“. Во сценариото тоа ќе се случува на секои 2.

          Можеби е кога ќе извршите мрежни мрежи, не постои процес со користење на мрежата и затоа не добивате излез.

          Скриптата мора да биде извршена како root затоа што на мрежните мрежи им треба тој корисник да функционира.

          сега се сетив на нешто важно и знам зошто не ти одговара:

          МОРА да ја УРЕДИТЕ скриптата и да го смените името на нормалниот корисник. Во сценариото се вика „хоакин“. Мора да го смените во вашето корисничко име.

          Извинете што не го сфатив тоа, требаше да го ставам името во променлива. Работата е во тоа што не размислував да го направам толку општо, само сакав да ти го покажам за да можеш да го видиш и оние што сакаат да добијат идеи како да го направат тоа. Не го сторив тоа со намера да работи на кој било компјутер, за тоа е потребно време и не знам како да програмирам, ми се случуваат некои работи.

          Среќно, што било прашај повторно. И, ве молиме, прочитајте ги објавите и коментарите на сценариото повторно.

  7.   Факундо dijo

    Здраво Хоакин, кажи ми го следново:

    далечински управувач: (http://localhost:9091/transmission/rpc/) Не можам да се поврзам на серверот
    ioctl не успеа при воспоставување на локална IP за избраниот уред eth0. Може да го наведете уредот на командната линија.

    какви било идеи ?? благодарам

    1.    Жоакин dijo

      Здраво како си.
      Извинете, но немам идеја
      Според она што го разбирам, вели грешката, тоа е проблем со ioctl, но не знам што е тоа.

      Можеби би можеле да се обидете да ја запрете скриптата и да видите дали далечинскиот управувач работи со некои од неговите опции (прочитајте ја неговата страница со командата „човек“).