Script Bash: Kontrolloni automatikisht bandën e transmetimit

Pershendetje te gjitheve. Ky është postimi im i dytë. Zakonisht nuk shkruaj postime nëse nuk kam diçka të mirë për të ndarë dhe kësaj here kam diçka për të cilën me siguri shumë do të interesohen.

Disa muaj më parë po mendoja të bëja një skenar për të kufizuar gjerësinë e aplikacioneve, por kisha disa probleme dhe gabime që më bënin të vështirë, kështu që ngrita dyshimet e mia në forum de <º DesdeLinux në rast se dikush kishte ndonjë ide.

Kështu që e lashë për një kohë dhe një ditë të bukur vendosa të rifilloja skenarin. Unë bëra shumë testime, lexova shumë për bash dhe kisha dhimbje koke në kohën time të lirë, por e bëra !!

Unë kam një kënaqësi të jashtëzakonshme dhe kështu kam vendosur të ndaj me ju skenarin tim të vogël në mënyrë që ju ta përdorni dhe ta përmirësoni atë. Unë planifikoj ta licencoj atë nën GPLv3, por është projekti im i parë kështu që nuk jam plotësisht i sigurt se si ta bëj këtë (kam nevojë për këshilla nga kushdo që e ka bërë më parë).

Epo, tani do të shpjegoj se cila ishte nevoja ime dhe çfarë bëra për të zgjidhur problemin.

Situata
Unë kam një plan interneti prej 512 KB, prandaj e përdor Transmetuesi si klient BitTorrent për të shkarkuar skedarë të mëdhenj (si LibreOffice dhe disa distro të GNU / Linux). Me atë shpejtësi, shkarkimet zgjasin shumë dhe problemi është kur përdorni shfletuesin e internetit Firefox: merr shumë kohë për t'u ngarkuar.

Kur të lidhem me internet, unë aktivizoj afatet e ngarkimit të shkarkimit dhe shkarkimit të transmetimit dhe pres që Firefox të ngarkohet, pastaj filloj përsëri torrentët. Siç do ta shihni, të bësh këtë disa herë është e lodhshme. Për të mos përmendur që nganjëherë unë pushoj plotësisht të gjithë torrentët dhe më pas harroj t'i aktivizoj përsëri, duke çuar në humbje kohe të vlefshme për ngarkimin / shkarkimin e torrentëve.

Zgjidhje
Për këtë problem vendosa të krijoj një skenar Bash që në thelb bën sa vijon:

1. Kontrolloni që Transmetimi po funksionon dhe asnjë torrent nuk është në pauzë. Nëse është kështu, ndizni përrenjtë përsëri.

2. Verifikoni që Firefox po ekzekutohet. Pastaj merr KB / s të dërguara dhe të marra nga ajo dhe i ruan ato në një skedar.

3. Nëse ngarkuesi ose shkarkimi i KB / s i shfletuesit tejkalon një gamë reference, cilësimet e ngarkimit / shkarkimit të Transmetimit ndryshohen.

Kjo lejon që kur të dëshironi të përdorni një faqe në internet, kur shfletuesi dërgon kërkesën, ngarkimi i skedarit të transmetimit është i kufizuar dhe kur të dhënat e faqes merren, shkarkimi është i kufizuar. Kjo funksionon shkëlqyeshëm kur hyni në shumë faqe në të njëjtën kohë dhe rezultatet janë në të vërtetë të njëjta si me Transmisionin me aftësi të kufizuara.

Përparësia e madhe është se është plotësisht automatike dhe nuk kërkon ndërhyrjen time.

Skenari
Megjithëse mund të përdoret për të kontrolluar konsumin e gjerësisë së brezit të çdo aplikacioni, për momentin është shkruar vetëm për të zgjidhur një problem shumë të veçantë. Por nuk është shumë e vështirë të bësh modifikime.

Kërkesat
Që të funksionojë si duhet është e nevojshme të keni aplikacionin «nethogs'.

Në këtë rast, ndërsa skenari punon me Firefox dhe Transmission, është e nevojshme të keni të instaluar këto aplikacione, përveç "transmetimit-largët", e cila është ajo që ndryshon vlerat e ngarkimit dhe shkarkimit të torrentit. Unë gjithashtu përdor në skenarin "awk". E përmend sepse nuk e di nëse të gjithë distros e kanë të instaluar.

Softueri i përdorur
Një listë e aplikacioneve që përdor skenari dhe sistemi ku punon.

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

Ekzekutim
Duhet të ekzekutohet si rrënjë sepse nethogs mund të ekzekutohet vetëm me atë përdorues, por transmetim-telekomandë ekzekutohet me përdoruesin normal me anë të komandës e tij

Skenari përdor komandën e brendshme Bash kurth Me të cilën është e mundur të rivendosni vlerat e paracaktuara të ngarkimit / shkarkimit të transmetimit, kur ndalet me anë të sinjaleve SIGINT (CTRL + c) ose SIGTERM.

Ende nuk jam i sigurt se si të bëj për ta ekzekutuar atë gjatë fillimit dhe për të ndaluar kur e mbyll ose rindez kompjuterin. Po mendoja të vendos një lidhje në dosje /etc/rc.local por nuk e di nëse do të funksiononte, dhe nuk e kuptoj vërtet se si / etj / funksiononfillimi.d (Unë pashë disa skenarë që janë atje, madje skelet, por nuk i kuptoj). Nëse dikush mund të më ndihmojë, unë do të jem shumë mirënjohës.

Mirë njerëz, kaq. Shpresoj që kontributi im i vogël të jetë i dobishëm për ju dhe se mund ta përmirësoni nëse dëshironi. Unë do të jem i lumtur të lexoj mendimet dhe rekomandimet tuaja si dhe sugjerimet në rast se ka probleme sigurie me skedarin (nuk jam programues, bëj vetëm disa gjëra kohë pas kohe).

E di që me disa rregullime mund të bëhet një aplikacion i shkëlqyeshëm në të ardhmen, sepse nuk di ndonjë program që bën të njëjtën gjë. Për shembull, më ndodh që të mund të kem një ndërfaqe grafike në zenitet dhe të qenit në gjendje të zgjedhim aplikacionet që duam t'i japim përparësi në përdorimin e gjerësisë së bandës (shfletuesi i internetit, menaxheri i azhurnimit, transferimi i skedarit, etj.) dhe vlerat e ndryshme të referencës. Po, është disi ambicioz, por mjaft i dobishëm.

Ju mund ta shkarkoni skenarin në ngjit. Faleminderit shumë për leximin !!


23 komente, lini tuajën

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   i gjallë dijo

    Oh! Interesante

    1.    eliotime3000 dijo

      Në këndin e poshtëm të majtë ju keni mundësinë për të kufizuar gjerësinë e bandës që Transmisioni konsumon si në ngarkim ashtu edhe në shkarkim. Me Transmisionin nuk kam pasur ndonjë problem me të.

      1.    biskotë dijo

        Por kjo është automatike, dhe ekziston edhe Transmisioni pa një ndërfaqe grafike kështu që mund të mos e keni atë funksion kaq afër.

      2.    Joaquin dijo

        Pershendetje si jeni.
        Po unë tashmë e di atë. Por kjo është pikërisht ajo që nuk dua të bëj.
        Unë kam një plan shumë të dobët në internet (512 KB dhe është më i miri në zonën time).

        Me skenarin tim, nuk shqetësohem që të bëj gjithçka me dorë. Imagjinoni sikur hapni një faqe në shfletuesin dhe Transmetimi është duke zënë të gjithë gjerësinë e brezit në atë moment, kështu që faqja kërkon pak kohë për të ngarkuar (më së shumti 1, por është ekzagjeruese). Jam lodhur nga "aktivizimi i afateve kohore" çdo dy minuta. Kjo është automatike dhe pothuajse e menjëhershme (kontrollon KB-në e dërguar dhe marrë nga Firefox çdo 5 sekonda).

        Me të vërtetë në rastin tim me atë shpejtësi të internetit, është e shkëlqyeshme. Gjithashtu unë nuk di ndonjë aplikacion tjetër që e bën këtë, përndryshe nuk do ta kishte bërë. Ato që kam parë vetëm kufizojnë gjerësinë e bandës, por jo automatikisht.

        Shpresoj ta kisha të qartë. Faleminderit per leximin!

        1.    Joaquin dijo

          Na vjen keq, gabova. Ata nuk janë 512KB, përkundrazi ata janë Kbits. (Kjo është, 1/2 "Mega"). Maksimumi që mund të shkarkoj është ngarkimi 75KB / s dhe 50KB / s. Kjo është kur interneti është mirë, përndryshe normalja është 48 dhe 23.

    2.    Joaquin dijo

      Ju faleminderit!

  2.   biskotë dijo

    Interesante, unë përdor qBittorrent dhe përdor ndërprerësin për kufij.

    Postimi duket bukur me ato ngjyra

    1.    Joaquin dijo

      Faleminderit për ngjyrat. Unë nuk jam shumë i mirë në të, duket shumë i gjatë dhe monoton me kaq shumë tekst.

  3.   Jorge dijo

    Personalisht, unë përdor transmetimin-daemon dhe firefox me një skedë të drejtpërdrejtë të aplikacionit, kështu që nuk shkoj me programe të jashtme ose duke harruar të vazhdoj torrentët ose breshkën e aktivizuar (dhe mund ta kontrolloj atë nga telefoni im). Për të filluar një shërbim, shtoni një përdorues (p.sh .: adduser - nethogs me fjalëkalim të paaftë), krijoni një skedar teksti për daemon në /etc/init.d me një emër (p.sh .: nethogs-daemon) dhe pastaj në azhurnimin e tipit debian -rc.d nethogs-daemon default "për ta bërë atë të fillojë vetvetiu.

    Skedari i tekstit është gjithashtu një skenar bash, në të cilin mund të bashkoni skenarin tuaj.
    Shikoni nëse kjo mund t'ju ndihmojë, mund të përdoret për të filluar transmetimin-daemon, mund të përdoret për të filluar nethogs https://trac.transmissionbt.com/wiki/Scripts/initd

    1.    Joaquin dijo

      Hello!
      Le të shohim nëse e kuptoj: kjo është për të filluar Transmisionin gjatë fillimit dhe ta ndaloni atë kur mbylleni ose rifilloni. Me këtë nuk kam asnjë problem pasi gjithmonë fillon vetvetiu dhe fillon të shkarkohet (e shtova tek aplikacionet gjatë fillimit në Xfce).

      Problemi im është që nëse e vendos shkrimin në rc.local ose në init.d nuk e di se si kompjuteri e ndalon skriptin. Kjo është, padyshim kur mbyllni / rifilloni PC, të gjitha proceset përfundojnë (dhe bashkë me to edhe Transmisioni dhe Nethogs) por nuk e di se çfarë do të ndodhte me skenarin tim.

      Dhe pse më shqetëson kjo? Skenari krijon një skedar në / tmp dhe kontrollon shpejtësinë e Transmetimit. Nëse e ekzekutoj në një terminal dhe papritmas e ndaloj (për shembull me CTRL + c), skenari, para mbylljes, rikthen shpejtësitë e paracaktuara (nëse është e nevojshme) dhe më pas ndalon Nethogs dhe fshin skedarin nga / tmp. Unë u përpoqa ta bëj atë sa më "profesional" të jetë e mundur në mënyrë që të mos lërë asnjë skedar të lirë ose procese sfondi.

      Për atë që thatë, nuk e kuptova se çfarë është "skeda e aplikacionit të drejtpërdrejtë".

      1.    Jorge dijo

        Një skedë e aplikacionit është një skedë e përhershme, ajo është gjithmonë e hapur dhe minimizuar brenda firefox http://i.imgur.com/a5i0aP3.png (menuja kontekstuale në skedë, klikoni në «ngjit skedën»). Kur daemonët dërgojnë sinjal TERM, ata presin pak, derisa të dalin jashtë, dhe ruajnë të dhënat e tyre. Vini re se në lidhjen që unë dhashë më parë kur dilja nga skenari bën thirrje start-stop-daemon dhe i thotë transmetimit të ndalet, atje ju mund të ngjisni "killall nethogs" dhe çfarë përmban StopScript. Skenari init në këtë rast do të duhet ta quani si root në vend të një përdoruesi specifik, pasi i duhen privilegje.

        1.    Joaquin dijo

          Epo faleminderit për këshillën. Sapo kam kohë e provoj!

  4.   facundo dijo

    shkëlqyeshëm, unë e kam hasur këtë shqetësim pasi që edhe nëse keni një lidhje të shpejtë, ju jeni të detyruar të kufizoni transmetimin ndërsa dëshironi të shfletoni dhe kështu të "humbni" kohën.
    Do ta provoj kur të mundem. Pershendetje dhe faleminderit !!

    1.    Joaquin dijo

      Fale teje! Shpresoj se kjo mund t'ju ndihmojë!

      1.    facundo dijo

        Përshëndetje përsëri Joaquin. E shoh që ju po kujdeseni që t'i përgjigjeni të gjitha komenteve, kështu që unë do të përfitoj nga kjo dhe do t'ju bëj disa pyetje rishtar.
        Së pari, si mund ta di nëse kam të instaluar skenarin "awk"? Unë përdor Debian 7.2.
        Së dyti, nuk di çfarë të bëj me kodin e ngjitjes. Më duhet të kap një redaktues teksti dhe ta ruaj në një skedar të quajtur "bandwidth-controller.sh" dhe pastaj ta ekzekutoj atë si "./band-width-controller.sh". Kjo është pjesa ku kam humbur më shumë.
        E treta: Kur thoni ta ekzekutoni si root, a është e nevojshme të ndryshohet nga përdoruesi në root ose me sudo?

        Nëse keni ndonjë lexim për të më rekomanduar në lidhje me këtë temë, unë e vlerësoj atë.
        Përshëndetje!

  5.   giskard dijo

    Kjo është arsyeja pse unë gjithmonë çinstaloj Transmisionin dhe instaloj Deluge. Epo, për këtë dhe ca më shumë gjëra që Deluge më ofron që tjetri nuk i sjell.

    1.    Joaquin dijo

      Përshëndetje, nuk e njoh përmbytjen. Problemi im kryesor është shërbimi i internetit. Me këtë e shtrydh në maksimum.

  6.   panda dijo

    Pershendetje gjerësia e bandës sime është gjithashtu e kufizuar, kështu që e provova këtë skenar. Por nuk po funksionon. gabimi duket të jetë në komandën nethogs -t. kthen gabimin "Në pritje të paketës së parë për të mbërritur (shih kodin burim burimi 1019381)" Provova nenexhik, archlinux dhe asgjë. Cila është ajo komandë që supozohet të kthehet? Supozoj se duhet të shtyp në tekst të thjeshtë gjerësinë e brezit të përdorur nga secili aplikacion. A njihni një program tjetër që ju lejon të dëgjoni rrjetin?

    1.    Joaquin dijo

      Pershendetje si jeni.
      Kjo është një e metë Nethogs. Edhe mua më duket, por gjithsesi funksionon.

      Ajo që bën Nethogs është të tregojë proceset që konsumojnë më shumë gjerësi bande, në kohë reale. Në skenar, rezultati i tij ruhet në një skedar teksti "net.list", në mënyrë që të filtrohet më vonë.

      Skenari punon vetëm me Transmission (një klient BitTorrent) dhe Firefox (shfletues uebi). Ajo që bën është të kufizojë bandën e Transmisionit kur Firefox po ngarkon një faqe në internet. Ju duhet të instaloni: Nethogs, Transmission, Transmission-remote dhe Firefox.

      E gjitha është shpjeguar në postim, kështu që nuk e di cili është problemi juaj.

      PS: Ju lutemi shkruani saktë dhe përmirësoni drejtshkrimin tuaj. Shtë një koment, jo një mesazh me tekst.

      1.    panda dijo

        skenari nuk funksionon për mua. shtyp atë mesazh gabimi shumë herë. ekzekutoni "nethogs -t" në një terminal për të parë se çfarë bën, por nuk shtyp asgjë, thjesht gabimin. në kompjuterin tim nuk po funksionon. Imagjinoj që duhet të shtypë diçka të ngjashme me atë që shtyp kur ekzekutohet pa -t, duke treguar proceset dhe gjerësinë e bandës. por në rastin tim nuk shtyp asgjë nga ato. cilin distro keni përdorur për të zhvilluar skenarin?

        1.    Joaquin dijo

          Nëse shikoni nga afër, postimi përmban të gjithë softuerin e përdorur dhe versionet e tij. Nuk e di pse gabimi, por më shfaqet sa herë që ekzekutohet "nethogs -t". Në skenar do të ndodhë çdo 2.

          Mund të ndodhë që kur ekzekutoni nethogs, të mos ketë asnjë proces duke përdorur rrjetin dhe kjo është arsyeja pse nuk merrni ndonjë dalje.

          Skenari duhet të ekzekutohet si root sepse nethogs ka nevojë që ai përdorues të funksionojë.

          tani mbaj mend diçka të rëndësishme dhe e di pse nuk funksionon për ju:

          DUHET T ED EDITONI skenarin dhe të ndryshoni emrin e përdoruesit normal. Në skenar quhet "joaquin". Ju duhet ta ndryshoni atë në emrin tuaj të përdoruesit.

          Na vjen keq që nuk e kuptova atë, unë duhej ta kisha vendosur emrin në një variabël. Ajo që ndodh është që unë nuk mendova ta bëja kaq të përgjithshme, thjesht doja ta tregoja për ju që ta shihni dhe ata që duan të marrin ide se si ta bëjnë këtë. Nuk e bëra me qëllimin që të funksiononte në ndonjë kompjuter, që kërkon kohë dhe nuk di si të programoj, disa gjëra më ndodhin.

          Fat i mirë, gjithçka pyet përsëri. Dhe ju lutemi lexoni përsëri postimin dhe komentet e skenarit.

  7.   facundo dijo

    Përshëndetje Joaquín, më tregoni sa vijon:

    telekomandë: (http://localhost:9091/transmission/rpc/) Nuk mund të lidhej me serverin
    ioctl dështoi gjatë vendosjes së IP lokale për pajisjen e zgjedhur eth0. Mund ta specifikoni pajisjen në vijën e komandës.

    Ndonje ide?? Faleminderit!

    1.    Joaquin dijo

      Pershendetje si jeni.
      Më falni por nuk kam ide
      Nga sa kuptoj se thotë gabimi, është një problem me ioctl, por nuk e di se çfarë është.

      Ndoshta mund të provoni të ndaloni skenarin dhe të shihni nëse transmetimi i largët funksionon me disa nga opsionet e tij (lexoni faqen e tij me komandën "njeri").