Script Bash: saate ülekande ribalaiust juhtida automaatselt

Tere kõigile. See on minu teine ​​postitus. Ma ei kirjuta tavaliselt postitusi, kui mul pole midagi head jagada ja seekord on mul midagi, mis kindlasti paljudest huvitatud on.

Mõni kuu tagasi mõtlesin teha skripti rakenduste ribalaiuse piiramiseks, kuid mul olid mõned probleemid ja vead, mis tegid selle minu jaoks raskeks, nii et tõstsin oma kahtlused foorum de <º DesdeLinux juhuks, kui kellelgi oleks ideed.

Nii jätsin selle mõneks ajaks seisma ja otsustasin ühel päeval stsenaariumi jätkata. Ma tegin palju teste, lugesin palju bashi kohta ja mul oli vabal ajal peavalu, aga ma tegin seda !!

Mul on tohutu rahulolu ja seetõttu otsustasin teiega jagada oma väikest skripti, et saaksite seda kasutada ja täiustada. Plaanin selle litsentsida GPLv3 all, kuid see on minu esimene projekt, nii et ma pole päris kindel, kuidas seda teha (vajan nõu kõigilt, kes seda varem teinud on)

Noh, nüüd selgitan, mis oli minu vajadus ja mida tegin probleemi lahendamiseks.

Olukord
Mul on Interneti-plaan 512Kbs, seetõttu kasutan Ülekandmine BitTorrenti kliendina suurte failide (näiteks LibreOffice ja mõned GNU / Linuxi distrod) allalaadimiseks. Selle kiirusega võtab allalaadimine kaua aega ja probleem on veebibrauseri kasutamisel Firefox: laadimine võtab kaua aega.

Interneti-ühenduse loomisel aktiveerin edastuse üleslaadimise ja allalaadimise ajapiirangud ning ootan Firefoxi laadimist, seejärel käivitan uuesti torrentid. Nagu näete, on paar korda seda teha tüütu. Rääkimata sellest, et mõnikord peatan kõik torrentid otse ja siis unustan need uuesti aktiveerida, mis toob kaasa torrentide üleslaadimiseks / allalaadimiseks kulutatud väärtusliku aja.

Lahus
Selle probleemi jaoks otsustasin luua Bashi skripti, mis teeb põhimõtteliselt järgmist:

1. Kontrollige, kas edastus töötab ja ühtegi torrentit pole peatatud. Kui jah, lülitage torrentid uuesti sisse.

2. Veenduge, et Firefox töötab. Seejärel saab see KB / s saadetud ja vastuvõetud ning salvestab need faili.

3. Kui brauseri üleslaadimise või allalaadimise KB / s ületab võrdlusvahemiku, muudetakse ülekande üleslaadimise / allalaadimise seadeid.

See võimaldab, et kui soovite veebilehele pääseda, kui brauser päringu saadab, on ülekandefaili üleslaadimine piiratud ja kui lehe andmed on vastu võetud, on allalaadimine piiratud. See töötab suurepäraselt, kui pääsete korraga juurde mitmele lehele ja tulemused on tegelikult samad kui ülekande keelamisel.

Suur eelis on see, et see on täisautomaatne ega vaja minu sekkumist.

Stsenaarium
Kuigi seda saaks kasutada mis tahes rakenduse ribalaiuse tarbimise kontrollimiseks, on see praegu kirjutatud ainult väga konkreetse probleemi lahendamiseks. Kuid muudatuste tegemine pole eriti keeruline.

Nõuded
Selle õigeks toimimiseks on vajalik rakendus «võrgukoerad'.

Sel juhul, kuna skript töötab Firefoxi ja ülekandega, on vaja lisaks rakendusele "edastus-kaugjuhtimine" installida ka need rakendused, mis muudab torrentide üles- ja allalaaditava väärtuse. Kasutan ka stsenaariumis "awk". Mainin seda, sest ma ei tea, kas kõikidele distrodele on see installitud.

Kasutatav tarkvara
Nimekiri rakendustest, mida skript kasutab, ja süsteemist, kus see töötab.

• Debiani GNU / Linux 6.0.8
• Linux 2.6.32-5-686
• Firefox 24.0
• Ülekanne 2.03 (11030)
• Nethogs 0.7.0

Täitmine
Seda tuleb käivitada juurkasutusega, kuna võrgukoerad saab käivitada ainult selle kasutajaga, kuid ülekandepult see käivitatakse tavalise kasutajaga käsu abil tema.

Skript kasutab sisemist käsku Bash lõks Millega on võimalik taastada ülekande koormuse / mahalaadimise vaikeväärtused, kui selle peatavad signaalid SIGINT (CTRL + c) või SIGTERM.

Ikka pole kindel, kuidas seda käivitamisel käivitada ja arvuti välja lülitamisel või taaskäivitamisel peatada. Mõtlesin faili linki panna /etc/rc.local aga ma ei tea, kas see töötaks, ja ma ei saa tegelikult aru, kuidas / etc / töötabinit.d (Ma nägin mõnda skripti, mis seal on, isegi luukere, aga ma ei saa neist aru). Kui keegi mind aidata saab, olen väga tänulik.

No inimesed, see selleks. Loodan, et minu väike panus on teile kasulik ja saate soovi korral seda paremaks muuta. Loen hea meelega teie arvamusi ja soovitusi ning ettepanekuid juhuks, kui failiga on probleeme turbega (ma ei ole programmeerija, vaid aeg-ajalt tegelen vaid mõne asjaga).

Ma tean, et mõne paranduse abil võib see tulevikus suurepäraseks rakenduseks saada, sest ma ei tea ühtegi sama toimivat programmi. Näiteks tuleb mulle meelde, et mul võiks olla graafiline liides ülimuslikkus ning et saaksime valida rakendused, mida soovime ribalaiuse kasutamisel esmatähtsaks pidada (veebibrauser, värskendushaldur, failiedastus jne) ja erinevad võrdlusväärtused. Jah, see on mõnevõrra ambitsioonikas, kuid üsna kasulik.

Skripti saate alla laadida pasta. Suur aitäh lugemast !!


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   elav DIJO

    Oh! Huvitav 😀

    1.    eliotime3000 DIJO

      Vasakus alanurgas on võimalus piirata ribalaiust, mida ülekanne kulutab nii üleslaadimisel kui ka allalaadimisel. Transmissiooniga pole mul sellega probleeme olnud.

      1.    küpsis DIJO

        Kuid see on automaatne ja on ka ülekanne ilma graafilise liideseta, nii et teil ei pruugi seda funktsiooni nii lähedal olla.

      2.    Joaquin DIJO

        Tere kuidas sul läheb.
        Jah, ma juba tean seda. Aga just seda ma teha ei taha.
        Mul on väga kehv Interneti-kava (512KB ja see on minu piirkonnas parim).

        Oma stsenaariumi abil ei muretse ma selle pärast, et kõike käsitsi teha. Kujutage ette, et avate lehe brauseris ja ülekanne hõivab sel hetkel kogu ribalaiuse, nii et lehe laadimine võtab aega (kõige rohkem 1 ′, kuid see on ärritav). Olen iga kahe minuti järel "ajapiirangute aktiveerimise" lõpetanud. See on automaatne ja peaaegu kohene (see kontrollib Firefoxi saadetud ja vastuvõetud KB-d iga 5 sekundi järel).

        Minu Interneti-kiiruse puhul on see suurepärane. Samuti ei tea ma ühtegi teist rakendust, mis seda teeks, muidu poleks ta seda teinud. Need, mida olen näinud, piiravad ainult ribalaiust, kuid mitte automaatselt.

        Loodan, et mul oli selge. Aitäh, et lugesid!

        1.    Joaquin DIJO

          Vabandust, ma eksisin. Need ei ole 512KB, pigem on need Kbit. (See tähendab 1/2 "mega"). Maksimaalselt saan alla laadida 75KB / s ja 50KB / s üleslaadimist. See on siis, kui Internet on korras, muidu on normaalne 48 ja 23.

    2.    Joaquin DIJO

      Aitäh!

  2.   küpsis DIJO

    Huvitav, ma kasutan qBittorrentit ja kasutan lülitit limiitide jaoks.

    Postitus näeb nende värvidega kena välja 😉

    1.    Joaquin DIJO

      Täname värvide eest. Ma pole selles eriti osav, see tundub nii pika tekstiga väga pikk ja üksluine.

  3.   jorge DIJO

    Isiklikult kasutan reaalajas rakenduste vahekaardiga transmission-daemon ja Firefox, nii et ma ei käi väliste programmidega ega unusta torrentide või aktiveeritud kilpkonna jätkamist (ja saan seda oma telefonist juhtida). Teenuse käivitamiseks lisage kasutaja (nt: adduser –disabled-password nethogs), looge /etc/init.d deemonile tekstifail nimega (nt: nethogs-daemon) ja seejärel debiani tüüpi „update -rc.d nethogs-daemon vaikimisi ", nii et see käivitub iseenesest.

    Ka tekstifail on bashi skript, kuhu saate oma skripti liita.
    Vaadake, kas see võib teid aidata, seda saab kasutada edastamise-deemoni käivitamiseks, seda saab kasutada nethogide käivitamiseks https://trac.transmissionbt.com/wiki/Scripts/initd

    1.    Joaquin DIJO

      Tere!
      Vaatame, kas ma saan aru: see on käivitusprogrammi käivitamine käivitamisel ja seiskamisel või taaskäivitamisel selle peatamine. Sellega pole mul probleeme, kuna see algab alati iseenesest ja hakkab alla laadima (lisasin selle Xfce'i käivitamisel rakendustesse).

      Minu probleem on see, et kui skripti rc.local või init.d paigutades ei tea, kuidas arvuti skripti peatab. See tähendab, et ilmselt arvuti sulgemisel / taaskäivitamisel kõik protsessid lõpetatakse (ja koos nendega ka Transmission ja Nethogs), kuid ma ei tea, mis mu skriptiga juhtuks.

      Ja miks see mind häirib? Skript loob faili / tmp-s ja kontrollib edastamise kiirust. Kui käivitan selle terminalis ja peatan selle järsku (näiteks klahvikombinatsiooniga CTRL + c), taastab skript enne sulgemist vaikekiirused (juhul kui see on vajalik) ning peatab seejärel Nethogsi ja kustutab faili / tmp-st. Püüdsin seda teha võimalikult "professionaalseks", et see ei jätaks ühtegi lahtist faili ega taustaprotsessi.

      Selle kohta, mida te ütlesite, ei saanud ma aru, mis on „reaalajas rakenduste vahekaart“.

      1.    jorge DIJO

        Rakenduse vaheleht on püsiv vaheleht, see on Firefoxis alati avatud ja minimeeritud http://i.imgur.com/a5i0aP3.png (vahekaardil kontekstimenüü, klõpsake nuppu «vahelehe kleepimine»). Kui deemonid saadavad TERM-signaali, ootavad nad mõnda aega, kuni nad on välja loginud, ja salvestavad oma andmed. Pange tähele, et lingis, mille ma enne skripti väljudes andsin, kutsub start-stop-daemon ja käsib edastamine peatada, sinna võiksite kleepida "killall nethogs" ja selle, mida see sisaldab StopScripti. Sellisel juhul peaksite init-skripti kutsuma konkreetse kasutaja asemel rootina, kuna see vajab õigusi.

        1.    Joaquin DIJO

          No aitäh vihje eest. Niipea kui mul on aega, proovin seda!

  4.   facundo DIJO

    tore, olen selle puudusega kokku puutunud, sest isegi kui teil on kiire ühendus, olete sunnitud surfamist piirama ja seega aega raiskama.
    Ma proovin seda, kui saan. Tervitused ja tänud !!

    1.    Joaquin DIJO

      Tänu sulle! Loodetavasti aitab see teid!

      1.    facundo DIJO

        Tere jälle Joaquin. Ma näen, et hoolitsete kõigi kommentaaride eest vastamise eest, nii et ma kasutan seda ära ja esitan teile paar uustulnukat.
        Esiteks, kuidas ma tean, kas mul on installitud skript "awk"? Kasutan Debiani 7.2.
        Teiseks, ma ei tea, mida kleepimiskoodiga peale hakata. Pean haarama tekstiredaktori ja salvestama selle faili nimega "bandwidth-controller.sh" ning käivitama selle siis failina "./band-width-control.sh". See on see osa, kus ma kõige rohkem eksinud olen.
        Kolmas: kui ütlete, et käivitate selle juurkasutajana, kas on vaja vahetada kasutaja juureks või piisab sudost?

        Kui teil on mõni lugemine, mis mind sellel teemal soovitaks, siis hindan seda.
        Tervitused!

  5.   giskard DIJO

    Sellepärast desinstallin alati ülekande ja installin Deluge. Noh, selle eest ja veel natuke asju, mida Deluge mulle pakub, mida teine ​​ei too.

    1.    Joaquin DIJO

      Tere, ma ei tunne uputust. Minu peamine probleem on Interneti-teenus. Sellega saan sellest maksimumi.

  6.   panda DIJO

    Tere. minu ribalaius on samuti piiratud, nii et proovisin seda skripti. Kuid see ei tööta. viga näib olevat käsus nethogs -t. tagastab tõrke "Ootan esimese paketi saabumist (vt sourceforge.net viga 1019381)" Proovisin mint, archlinux ja mitte midagi. Mida see käsk peaks tagastama? Ma peaksin printima tavalise tekstiga ribalaiuse, mida iga rakendus kasutab. Kas teate mõnda muud programmi, mis võimaldab teil võrku kuulata?

    1.    Joaquin DIJO

      Tere kuidas sul läheb.
      See on Nethogsi viga. See paistab ka mulle, aga igatahes töötab.

      Nethogs teeb reaalajas protsesse, mis tarbivad kõige rohkem ribalaiust. Skriptis salvestatakse selle väljund tekstifaili "net.list", et seda saaks hiljem filtreerida.

      Skript töötab ainult koos edastuse (BitTorrent klient) ja Firefoxiga (veebibrauser). See piirab edastuse ribalaiust, kui Firefox veebisaiti laadib. Peate installima: Nethogs, Transmission, Transmission-remote ja Firefox.

      Seda kõike selgitatakse postituses, nii et ma ei tea, mis on teie probleem.

      PS: Palun kirjutage õigesti ja parandage oma õigekirja. See on kommentaar, mitte tekstsõnum.

      1.    panda DIJO

        skript ei tööta minu jaoks. prindib selle veateate mitu korda. käivitage terminalis "nethogs -t", et näha, mida see teeb, kuid see ei prindi midagi, lihtsalt viga. minu arvutis see ei tööta. Kujutan ette, et see peaks printima midagi sarnast sellele, mida see prindib, kui ta töötab ilma -t-ta, näidates protsesse ja ribalaiust. aga minu puhul ei trüki see midagi sellist. millist distroot kasutasite skripti arendamiseks?

        1.    Joaquin DIJO

          Lähemalt uurides sisaldab postitus kogu kasutatavat tarkvara ja selle versioone. Ma ei tea, miks viga ilmnes, kuid see ilmub mulle iga kord, kui käivitatakse "nethogs -t". Skriptis toimub see iga 2 ″ järel.

          Võib juhtuda, et nethogide käivitamisel ei toimu võrku kasutades ühtegi protsessi ja seetõttu ei saa te väljundit.

          Skript tuleb käivitada juurkataloogina, kuna nethogs vajab selle kasutaja funktsioneerimist.

          nüüd meenus mulle midagi olulist ja tean, miks see teie jaoks ei toimi:

          PEAB redigeerima skripti ja muutma tavakasutaja nime. Skriptis nimetatakse seda "joaquin". Peate selle kasutajanimeks muutma.

          Vabandust, et ma sellest aru ei saanud, oleksin pidanud selle nime muutujasse panema. Asi on selles, et ma ei mõelnud seda nii üldsõnaliseks muuta, vaid tahtsin seda teile näidata, et saaksite seda näha ja soovijad saaksid ideid, kuidas seda teha. Ma ei teinud seda kavatsusega, et see töötaks mis tahes arvutis, see võtab aega ja ma ei oska programmeerida, mõned asjad juhtuvad minuga.

          Edu, kõike küsige uuesti. Ja lugege palun uuesti stsenaariumi postitust ja kommentaare.

  7.   facundo DIJO

    Tere Joaquín, ütle mulle järgmist:

    kaugedastus: (http://localhost:9091/transmission/rpc/) Serveriga ei saanud ühendust luua
    Valitud seadme eth0 kohaliku IP loomisel ebaõnnestus ioctl. Seadme saate määrata käsureal.

    mingeid ideid?? aitäh!

    1.    Joaquin DIJO

      Tere kuidas sul läheb.
      Vabandage, aga mul pole aimugi 😀
      Selle põhjal, mis veast aru saan, on see probleem ioctl-iga, kuid ma ei tea, mis see on.

      Võib-olla võiksite proovida skripti peatada ja vaadata, kas kaugjuhtimispult töötab mõne selle suvandiga (lugege selle man lehte käsuga "man").