Script Bash: Awtomatikong Kontrolin ang Transmission Bandwidth

Kamusta po sa lahat Pangalawang post ko na ito. Hindi ako karaniwang nagsusulat ng mga post maliban kung mayroon akong magandang maibabahagi at sa oras na ito ay mayroon akong isang bagay na tiyak na maraming magiging interesado.

Ilang buwan na ang nakakalipas ay iniisip kong gumawa ng isang script upang malimitahan ang bandwidth ng mga application, ngunit mayroon akong ilang mga problema at pagkakamali na naging mahirap para sa akin, kaya't itinaas ko ang aking mga pagdududa sa butas de <º DesdeLinux kung sakaling may may ideya.

Kaya't iniwan ko ito sandali at isang araw ay napagpasyahan kong ipagpatuloy ang script. Gumawa ako ng maraming pagsubok, marami akong nabasa tungkol sa bash, at mayroon akong sakit ng ulo sa aking bakanteng oras, ngunit ginawa ko ito !!

Mayroon akong napakalaking kasiyahan at sa gayon napagpasyahan kong ibahagi sa iyo ang aking maliit na script upang magamit mo ito at pagbutihin. Plano kong lisensyahan ito sa ilalim ng GPLv3, ngunit ito ang aking unang proyekto kaya't hindi ako sigurado kung paano ito gagawin (kailangan ko ng payo mula sa kung sino ang gumawa nito dati).

Kaya, ngayon ay ipapaliwanag ko kung ano ang kailangan ko at kung ano ang ginawa ko upang malutas ang problema.

Sitwasyon
Mayroon akong isang plano sa Internet na 512Kbs, samakatuwid gumagamit ako Transmisyon bilang isang BitTorrent client upang mag-download ng malalaking mga file (tulad ng LibreOffice at ilang mga distro ng GNU / Linux). Sa bilis na iyon ang mga pag-download ay tumatagal ng isang mahabang oras at ang problema ay kapag gumagamit ng web browser Firefox: tumatagal ng mahabang oras upang mai-load.

Kapag kumonekta ako sa Internet, pinapagana ko ang mga limitasyon ng pag-upload at pag-download ng Transmission at hintayin ang pag-load ng Firefox, pagkatapos ay simulan muli ang mga ilog. Tulad ng makikita mo, ang paggawa nito ng maraming beses ay nakakapagod. Hindi banggitin na kung minsan ay deretso kong i-pause ang lahat ng mga ilog at pagkatapos ay kalimutan na muling buksan ang mga ito, na humahantong sa mahalagang oras na nasayang para sa pag-upload / pag-download ng mga sapa.

Solusyon
Para sa problemang ito nagpasya akong lumikha ng isang script sa Bash na karaniwang ginagawa ang mga sumusunod:

1. Suriin na tumatakbo ang Transmission at walang pag-pause ang torrent. Kung gayon, buksan muli ang mga ilog.

2. I-verify na tumatakbo ang Firefox. Pagkatapos ay ipinapadala ang KB / s na ipinadala at natanggap nito at nai-save ang mga ito sa isang file.

3. Kung ang upload / pag-download ng browser ng KB / s ay lumampas sa isang saklaw ng sanggunian, ang setting ng Pag-upload / pag-download ng pagbabago ay binago.

Pinapayagan nito na kapag nais na mag-access sa isang web page, kapag nagpadala ang browser ng kahilingan, limitado ang upload ng paghahatid ng file at kapag natanggap ang data ng pahina, limitado ang pag-download. Gumagana ito nang mahusay kapag nag-a-access ng maraming mga pahina nang sabay-sabay at ang mga resulta ay talagang kapareho ng hindi pinagana ang Transmission.

Ang mahusay na bentahe ay na ito ay ganap na awtomatikong at hindi nangangailangan ng aking interbensyon.

Ang iskrip
Bagaman maaari itong magamit upang makontrol ang pagkonsumo ng bandwidth ng anumang aplikasyon, sa ngayon ay nakasulat lamang ito upang malutas ang isang partikular na problema. Ngunit hindi napakahirap gumawa ng mga pagbabago.

Requisitos
Para gumana ito ng maayos kinakailangan na magkaroon ng aplikasyon «mga nethog'.

Sa kasong ito, habang gumagana ang script sa Firefox at Transmission, kinakailangan na mai-install ang mga application na ito, bilang karagdagan sa "transmission-remote" na kung saan ay binabago ang mga halaga ng pag-upload at pag-download ng mga torrents. Gumagamit din ako sa iskrip na "awk". Nabanggit ko ito dahil hindi ko alam kung ang lahat ng mga distro ay na-install ito.

Ginamit ang software
Isang listahan ng mga application na ginagamit ng script at ang system kung saan ito gumagana.

• Debian GNU / Linux 6.0.8
• Linux 2.6.32-5-686
• Firefox 24.0
• Transmission 2.03 (11030)
• Nethogs 0.7.0

Pagpapatupad
Dapat itong patakbuhin bilang ugat dahil mga nethog maaari lamang patakbuhin kasama ang gumagamit na iyon, ngunit transmission-remote ay isinasagawa sa normal na gumagamit sa pamamagitan ng utos ang kanyang

Gumagamit ang script ng panloob na utos ng Bash bitag Na kung saan posible na ibalik ang halaga ng paghahatid / i-unload ang mga default na halaga, kapag ito ay tumigil sa pamamagitan ng mga signal ng SIGINT (CTRL + c) o SIGTERM.

Hindi pa rin sigurado kung paano gawin upang patakbuhin ito sa pagsisimula at huminto kapag isinara ko o muling nai-restart ang computer. Naisip kong maglagay ng isang link sa file /etc/rc.local ngunit hindi ko alam kung gagana ito, at hindi ko talaga maintindihan kung paano gumana / etc /init.d (Nakita ko ang ilang mga script na naroroon, kahit balangkas, ngunit hindi ko maintindihan ang mga ito). Kung may makakatulong sa akin, labis akong magpapasalamat.

Well mga kababayan, iyan lang. Inaasahan kong ang aking maliit na kontribusyon ay kapaki-pakinabang sa iyo at maaari mong pagbutihin ito kung nais mo. Masisiyahan akong basahin ang iyong mga opinyon at rekomendasyon pati na rin ang mga mungkahi kung sakaling may mga problema sa seguridad sa file (Hindi ako isang programmer, gumagawa lamang ako ng ilang mga bagay paminsan-minsan).

Alam ko na sa ilang mga pag-aayos maaari itong maging isang mahusay na application sa hinaharap, dahil hindi ko alam ang anumang programa na gumagawa ng pareho. Halimbawa nangyayari sa akin na maaari akong magkaroon ng isang graphic na interface sa kasiglahan at upang mapili ang mga application na nais naming unahin sa paggamit ng bandwidth (web browser, update manager, file transfer, atbp.) at ang iba't ibang mga halaga ng sanggunian. Oo, ito ay medyo mapaghangad, ngunit lubos na kapaki-pakinabang.

Maaari mong i-download ang script sa ilagay. Maraming salamat sa pagbabasa !!


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   masigla dijo

    Oh! Kagiliw-giliw na 😀

    1.    eliotime3000 dijo

      Sa ibabang kaliwang sulok mayroon kang pagpipilian upang limitahan ang bandwidth na naubos ng Transmission sa pag-upload at pag-download. Sa Transmission wala akong anumang problema dito.

      1.    cookie dijo

        Ngunit ito ay awtomatiko, at mayroon ding Paghahatid nang walang isang graphic na interface upang maaaring hindi ka magkaroon ng pagpapaandar na iyon sa malapit na kamay.

      2.    Joaquin dijo

        Hello kamusta ka na
        Oo alam ko na yun. Ngunit iyon talaga ang ayaw kong gawin.
        Mayroon akong isang napaka mahinang plano sa internet (512KB at ito ang pinakamahusay sa aking lugar).

        Sa aking script, hindi ako nag-aalala tungkol sa paggawa ng lahat sa pamamagitan ng kamay. Isipin na magbubukas ka ng isang pahina sa browser at ang Transmission ay sinasakop ang lahat ng bandwidth sa sandaling iyon, kaya't ang pahina ay tumatagal ng ilang oras upang mai-load (hindi hihigit sa 1 ′, ngunit nakakagalit). Tapos na ako sa "pag-activate ng mga limitasyon sa oras" bawat dalawang minuto. Ito ay awtomatiko at halos madalian (sinusuri nito ang ipinadala at natanggap ng KB tuwing 5 segundo).

        Talagang sa aking kaso sa bilis ng internet na iyon, napakahusay. Gayundin hindi ko alam ang isa pang aplikasyon na ginagawa ito, kung hindi man ay hindi ito nagawa. Ang mga nakita ko ay naglilimita lamang ng bandwidth, ngunit hindi awtomatiko.

        Sana malinis ako. Salamat sa pagbabasa!

        1.    Joaquin dijo

          Paumanhin. Nagkamali ako. Hindi sila 512KB, sa halip sila ay Kbits. (Iyon ay, 1/2 "Mega"). Ang maximum na maida-download ko ay 75KB / s at 50KB / s na pag-upload. Iyon ay kapag ang Internet ay mabuti, kung hindi man ang normal ay 48 at 23.

    2.    Joaquin dijo

      Salamat sa iyo!

  2.   cookie dijo

    Kagiliw-giliw, gumagamit ako ng qBittorrent at ginagamit ang switch para sa mga limitasyon.

    Mukhang maganda ang post sa mga kulay na iyon 😉

    1.    Joaquin dijo

      Salamat sa mga kulay. Hindi ako masyadong magaling dito, mukhang napakahaba at walang pagbabago ang tono sa sobrang dami ng teksto.

  3.   Jorge dijo

    Sa personal, gumagamit ako ng transmission-daemon at firefox na may isang live na tab ng aplikasyon, kaya't hindi ako naglalakad kasama ang mga panlabas na programa o kinakalimutang ipagpatuloy ang mga agos o ang naka-activate na pagong (at makokontrol ko ito mula sa aking telepono). Upang simulan ang isang serbisyo, magdagdag ng isang gumagamit (hal: adduser –disabled-password nethogs), lumikha ng isang file ng teksto para sa daemon sa /etc/init.d na may pangalan (hal: nethogs-daemon) at pagkatapos ay sa debian type nito ang " update-rc.d nethogs-daemon default "upang magsimula itong mag-isa.

    Ang file ng teksto ay isang bash script din, kung saan maaari mong pagsamahin ang iyong script.
    Tingnan kung makakatulong ito sa iyo, maaari itong magamit upang simulan ang transmission-daemon, maaari itong magamit upang simulan ang mga nethog https://trac.transmissionbt.com/wiki/Scripts/initd

    1.    Joaquin dijo

      Hello!
      Tingnan natin kung naiintindihan ko: ito ay upang simulan ang Paghahatid sa pagsisimula at ihinto ito kapag nagsara o nag-restart. Sa iyon wala akong mga problema dahil palaging nagsisimula ito nang mag-isa at nagsisimulang mag-download (idinagdag ko ito sa mga application sa pagsisimula sa Xfce).

      Ang problema ko ay kung kapag inilalagay ang script sa rc.local o sa init.d hindi ko alam kung paano pinahinto ng computer ang script. Iyon ay, malinaw naman kapag ang pagsasara / pag-restart ng PC, ang lahat ng mga proseso ay natapos (at kasama nila ang Transmission at Nethogs din) ngunit hindi ko alam kung ano ang mangyayari sa aking script.

      At bakit ginugulo ako nito? Lumilikha ang script ng isang file sa / tmp at kinokontrol ang bilis ng Pagpapadala. Kung patakbuhin ko ito sa isang terminal at biglang ihinto ito (halimbawa sa CTRL + c), ibabalik ng script bago ang pagsara ang mga default na bilis (kung sakaling kinakailangan ito) at pagkatapos ay ihinto ang Nethogs at tatanggalin ang file mula sa / tmp. Sinubukan kong gawin itong "propesyonal" hangga't maaari upang hindi ito mag-iwan ng anumang maluwag na mga file o proseso sa background.

      Tungkol sa sinabi mo, hindi ko naintindihan kung ano ang "live application tab".

      1.    Jorge dijo

        Ang isang tab ng application ay isang permanenteng tab, palagi itong bukas at pinaliit sa loob ng firefox http://i.imgur.com/a5i0aP3.png (menu ng konteksto sa tab, mag-click sa «i-paste ang tab»). Kapag nagpadala ang mga daemon ng TERM signal naghihintay sila sandali, hanggang matapos nilang maisara ang session, at mai-save ang kanilang data. Tandaan na sa link na ibinigay ko dati kapag lumalabas sa script ay tumatawag ng start-stop-daemon at sinasabing ihinto ang paghahatid, doon maaari mong i-paste ang "killall nethogs" at kung ano ang naglalaman ng StopScript. Ang init script sa kasong ito ay tatawagin mo itong root sa halip na isang tukoy na gumagamit, dahil nangangailangan ito ng mga pribilehiyo.

        1.    Joaquin dijo

          Well salamat sa tip. Sa sandaling magkaroon ako ng oras subukan ko ito!

  4.   facundo dijo

    mahusay, nakatagpo ako ng abala na ito dahil kahit na mayroon kang isang mabilis na koneksyon napipilitan kang limitahan ang paghahatid habang nais mong mag-browse at sa gayon ay "sayangin" ang oras.
    Susubukan ko ito kung kaya ko. Pagbati at salamat !!

    1.    Joaquin dijo

      Salamat sa iyo! Inaasahan kong makakatulong ito sa iyo!

      1.    facundo dijo

        Kumusta ulit Joaquin. Nakikita ko na nangangalaga ka sa pagtugon sa lahat ng mga puna kaya't samantalahin ko iyon at tatanungin kita ng ilang mga katanungan ng rookie.
        Una, paano ko malalaman kung mayroon akong naka-install na "awk" na script? Gumagamit ako ng Debian 7.2.
        Pangalawa, hindi ko alam kung ano ang gagawin sa paste code. Kailangan kong kunin ang isang text editor at i-save ito sa isang file na tinatawag na "bandwidth-controller.sh" at pagkatapos ay patakbuhin ito bilang "./band-width-control.sh". Ito ang bahagi kung saan ako pinaka nawala.
        Pangatlo: Kapag sinabi mong patakbuhin ito bilang ugat, kinakailangan bang baguhin mula sa gumagamit patungong ugat o sapat na ba ito sa sudo?

        Kung mayroon kang anumang pagbabasa upang inirerekumenda ako sa paksa, pinahahalagahan ko ito.
        Pagbati!

  5.   giskard dijo

    Iyon ang dahilan kung bakit palagi kong na-uninstall ang Transmission at na-install ang Deluge. Kaya, para doon at kaunti pang mga bagay na inaalok sa akin ng Deluge na hindi dinala ng iba.

    1.    Joaquin dijo

      Kumusta, hindi ko alam ang Delubyo. Ang pangunahing problema ko ay ang serbisyo sa internet. Sa pamamagitan nito ay pinipiga ko ito nang buong buo.

  6.   panda dijo

    Hi limitado rin ang aking bandwidth kaya sinubukan ko ang script na ito. Ngunit hindi ito gumagana. ang error ay tila nasa nethogs -t utos. ibinalik nito ang error na "Naghihintay para sa unang packet na dumating (tingnan ang sourceforge.net bug 1019381)" at sinubukan ko ang mint, archlinux at wala. Ano ang dapat ibalik ng utos na iyon? Ipagpalagay ko na dapat kong mai-print sa simpleng teksto ang bandwidth na ginamit ng bawat aplikasyon. May alam ka bang ibang programa na nagbibigay-daan sa iyo upang makinig sa network?

    1.    Joaquin dijo

      Hello kamusta ka na
      Iyon ay isang bug ng Nethogs. Lumilitaw din ito sa akin, ngunit gumagana pa rin ito.

      Ang ginagawa ng Nethogs ay ipakita ang mga proseso na kumonsumo ng pinakamaraming bandwidth, sa real time. Sa script, ang output nito ay nai-save sa isang text file na "net.list", upang maaari itong mai-filter sa ibang pagkakataon.

      Gumagana lamang ang script sa Transmission (isang BitTorrent client) at Firefox (web browser). Ang ginagawa nito ay nililimitahan ang bandwidth ng Transmission kapag naglo-load ang Firefox ng isang web page. Kailangan mong i-install: Nethogs, Transmission, Transmission-remote at Firefox.

      Ipinaliwanag ang lahat sa post, kaya hindi ko alam kung ano ang iyong problema.

      PS: Mangyaring sumulat ng tama at pagbutihin ang iyong spelling. Ito ay isang komento, hindi isang text message.

      1.    panda dijo

        hindi gagana ang script para sa akin. naka-print ang mensahe ng error ng maraming beses. patakbuhin ang "nethogs -t" sa isang terminal upang makita kung ano ang ginagawa nito ngunit hindi ito naka-print kahit ano, ang error lamang. sa aking pc hindi ito gumagana. Naiisip ko na dapat itong mag-print ng isang bagay na katulad sa kung ano ang naka-print nito kapag naisakatuparan nang walang t, ipinapakita ang mga proseso at bandwidth. ngunit sa aking kaso hindi ito naka-print alinman sa mga iyon. aling distro ang ginamit mo upang mapaunlad ang iskrip?

        1.    Joaquin dijo

          Kung titingnan mo nang mabuti, naglalaman ang post ng lahat ng software na ginamit at mga bersyon nito. Hindi ko alam kung bakit ang error, ngunit lumilitaw ito sa akin tuwing tatakbo ang "nethogs -t". Sa script mangyayari ito tuwing 2 ″.

          Maaaring kapag nagpatakbo ka ng mga nethog, walang proseso gamit ang network at iyon ang dahilan kung bakit hindi ka nakakakuha ng anumang output.

          Ang script ay dapat na patakbuhin bilang ugat dahil kailangan ng nethogs ang gumagamit na iyon upang gumana.

          Ngayon naalala ko ang isang bagay na mahalaga at alam ko kung bakit hindi ito gumagana para sa iyo:

          DAPAT mong i-edit ang script at palitan ang pangalan ng normal na gumagamit. Sa iskrip ay tinawag itong "joaquin". Dapat mo itong palitan sa pangalan ng iyong gumagamit.

          Paumanhin hindi ko namalayan iyon, dapat kong ilagay ang pangalan sa isang variable. Ang bagay ay hindi ko naisip na gawin itong napakalawak, nais ko lamang itong ipakita sa iyo upang makita mo ito at ang mga nais ay maaaring makakuha ng mga ideya kung paano ito gawin. Hindi ko ito nagawa na may balak na gumana ito sa anumang computer, na tumatagal ng oras at hindi ko alam kung paano mag-program, ilang bagay ang nangyayari sa akin.

          Good luck, kahit anong tanungin ulit. At mangyaring basahin muli ang post at mga komento ng script.

  7.   facundo dijo

    Kumusta Joaquín, sabihin sa akin ang sumusunod:

    transmission-remote: (http://localhost:9091/transmission/rpc/) Hindi makakonekta sa server
    Nabigo ang ioctl habang itinataguyod ang lokal na IP para sa napiling aparato eth0. Maaari mong tukuyin ang aparato sa linya ng utos.

    anumang mga ideya ?? salamat!

    1.    Joaquin dijo

      Hello kamusta ka na
      Excuse me pero wala akong idea 😀
      Mula sa naintindihan ko na sinasabi ng error, ito ay isang problema sa ioctl, ngunit hindi ko alam kung ano iyon.

      Marahil maaari mong subukang ihinto ang script at makita kung gumagana ang transmission-remote kasama ang ilan sa mga pagpipilian nito (basahin ang pahina ng tao nito sa utos na "man").