Скриптийн Bash: Дамжуулах зурвасын өргөнийг автоматаар хянах

Бүгдээрээ сайн уу. Энэ бол миний хоёр дахь бичлэг. Надад хуваалцах сайхан зүйл байхгүй бол би ихэвчлэн нийтлэл бичдэггүй бөгөөд энэ удаад олон хүний ​​сонирхох зүйл байгаа нь лавтай.

Хэдэн сарын өмнө би програмын зурвасын өргөнийг хязгаарлах скрипт хийх талаар бодож байсан боловч надад бэрхшээлтэй тулгарсан зарим асуудал, алдаа гарсан тул эргэлзээгээ форум de <º FromLinux хэн нэгэнд санаа байсан тохиолдолд.

Тиймээс би хэсэг хугацаанд орхиод нэг сайхан өдөр зохиолоо үргэлжлүүлэхээр шийдлээ. Би олон туршилт хийж, башёгийн талаар маш их уншиж, чөлөөт цагаараа толгой өвдөж байсан ч би үүнийг хийсэн !!

Би маш их сэтгэл хангалуун байгаа тул та үүнийг ашиглаж, сайжруулахын тулд өөрийнхөө жижиг скриптийг та бүхэнтэй хуваалцахаар шийдлээ. Би үүнийг GPLv3-ийн дагуу лицензжүүлэхээр төлөвлөж байгаа боловч энэ бол миний анхны төсөл тул яаж хийхээ сайн мэдэхгүй байна (өмнө нь хийж байсан хүнээс зөвлөгөө авах хэрэгтэй).

Одоо би ямар хэрэгцээтэй байсан, асуудлыг шийдэхийн тулд юу хийснээ тайлбарлах болно.

Нөхцөл байдал
Надад 512Kbs интернэт төлөвлөгөө байгаа тул ашигладаг дамжуулах том файлуудыг татаж авах BitTorrent програмын хувьд (LibreOffice болон зарим GNU / Linux хуваарилалт гэх мэт). Энэ хурдаар татаж авах нь удаан хугацаа шаарддаг бөгөөд асуудал нь вэб хөтөч ашиглахад тулгардаг Firefox: ачаалахад удаан хугацаа шаардагдана.

Интернетэд холбогдохдоо дамжуулалт байршуулах, татаж авах хугацааны хязгаарыг идэвхжүүлж, Firefox-ийг ачаалахыг хүлээгээд торрентийг дахин эхлүүлнэ. Үүнийг хоёр удаа хийх нь уйтгартай гэдгийг та харах болно. Заримдаа би бүх torrent-ийг шууд түр зогсоож байгаад дахин идэвхжүүлэхээ мартдаг тул torrent-ийг байршуулах / татаж авахад үнэтэй цаг хугацаа алдахад хүргэдэг.

Шийдэл
Энэ асуудлын хувьд би үндсэндээ дараахь зүйлийг хийдэг Bash скрипт үүсгэхээр шийдсэн юм.

1. Transmission ажиллаж байгаа бөгөөд torrent түр зогсоогүй эсэхийг шалгана уу. Хэрэв тийм бол torrent-ийг дахин асаагаарай.

2. Firefox ажиллаж байгааг баталгаажуулна уу. Дараа нь илгээсэн, хүлээн авсан KB / s-ийг аваад файл дотор хадгалдаг.

3. Хэрэв хөтөч байршуулах эсвэл татаж авах KB / s нь лавлагааны мужаас хэтэрсэн бол дамжуулах байршуулах / татаж авах тохиргоог өөрчилнө.

Энэ нь вэб хуудсанд нэвтрэх хүсэлтэй үед, хөтөч хүсэлт илгээхэд дамжуулах файлын байршуулалт хязгаарлагдаж, хуудасны өгөгдөл хүлээн авахад татан авалт хязгаарлагдах боломжийг олгодог. Энэ нь олон хуудсанд нэгэн зэрэг хандахад үр дүнтэй бөгөөд үр дүн нь Transmission Disabled-тэй ижил байна.

Маш том давуу тал бол бүрэн автомат бөгөөд миний оролцоог шаарддаггүй явдал юм.

Бичиг үсэг
Хэдийгээр үүнийг ямар ч програмын зурвасын өргөнийг хянахад ашиглаж болох боловч одоогоор маш тодорхой асуудлыг шийдвэрлэхийн тулд үүнийг бичиж байна. Гэхдээ өөрчлөлт хийх нь тийм ч хэцүү биш юм.

Шаардлагууд
Үүнийг зөв ажиллуулахын тулд «» програмтай байх шаардлагатайторго".

Энэ тохиолдолд скрипт нь Firefox ба Transmission-тэй ажилладаг тул torrent-ийн байршуулах, татаж авах утгыг өөрчилдөг "дамжуулалт-алсын" -аас гадна эдгээр програмуудыг суулгасан байх шаардлагатай. Би бас "awk" скриптэд ашигладаг. Бүх дистростууд суулгасан эсэхийг мэдэхгүй тул би үүнийг дурьдаж байна.

Програм хангамж ашигладаг
Скрипт ашигладаг програмууд болон ажилладаг системийн жагсаалт.

• Debian GNU / Linux 6.0.8
• Linux 2.6.32-5-686
• Firefox 24.0
• Дамжуулах 2.03 (11030)
• Nethogs 0.7.0

Гүйцэтгэл
Үүнийг root хэлбэрээр ажиллуулах ёстой торго зөвхөн тухайн хэрэглэгчтэй хамт ажиллуулж болох боловч дамжуулах-алсын үүнийг тушаалын тусламжтайгаар ердийн хэрэглэгчтэй хамт гүйцэтгэдэг түүний.

Скрипт нь Bash Bash командыг ашигладаг занга Үүний тусламжтайгаар SIGINT (CTRL + c) эсвэл SIGTERM дохиогоор зогссоны дараа өгөгдмөл дамжуулах байршуулах / татаж авах утгыг сэргээх боломжтой.

Компьютерээ унтрааж эсвэл асаахад үүнийг эхлүүлэх үед хэрхэн яаж ажиллуулахаа мэдэхгүй хэвээр байна. Би файл руу холбоос оруулах талаар бодож байсан /etc/rc.local гэхдээ энэ нь ажиллах эсэхийг мэдэхгүй, / etc / хэрхэн ажилладагийг би сайн ойлгодоггүйinit.d (Би тэнд байсан зарим скриптийг харсан, тэр ч байтугай араг яс, гэхдээ би тэднийг ойлгохгүй байна). Хэрэв хэн нэгэн надад тусалж чадвал би маш их талархах болно.

 

За хүмүүс ээ, тэгээд л боллоо. Миний өчүүхэн хувь нэмэр танд хэрэгтэй бөгөөд та хүсвэл үүнийг сайжруулах боломжтой гэж найдаж байна. Файлтай холбоотой аюулгүй байдлын асуудал гарсан тохиолдолд таны санал, зөвлөмж, саналыг уншихад таатай байх болно (би програм зохиогч биш, хааяа хэд хэдэн зүйл хийдэг).

Үүнтэй ижил програм хийдэг програм мэдэхгүй тул зарим нэг засварын тусламжтайгаар энэ нь ирээдүйд гайхалтай програм болж чадна гэдгийг би мэднэ. Жишээлбэл, надад график интерфэйс байж болох юм шиг санагддаг сэргэлэн цовоо байдал мөн зурвасын өргөн (вэб хөтөч, шинэчлэх менежер, файл дамжуулах гэх мэт) -ийг ашиглахад эрэмбэлэхийг хүссэн програмуудаа сонгох боломжтой байх. Тийм ээ, энэ нь зарим талаар амбицтай боловч нэлээд ашигтай юм.

Та скриптийг бэлчээрлээрэй. Уншсанд маш их баярлалаа !!


Нийтлэлийн агуулга нь бидний зарчмуудыг баримталдаг редакцийн ёс зүй. Алдааны талаар мэдээлэхийн тулд товшино уу энд байна.

23 сэтгэгдэл, үлдээгээрэй

Сэтгэгдэлээ үлдээгээрэй

Таны и-мэйл хаяг хэвлэгдсэн байх болно. Шаардлагатай талбарууд нь тэмдэглэгдсэн байна *

*

*

  1. Мэдээллийг хариуцах: Мигель Анхель Гатан
  2. Мэдээллийн зорилго: СПАМ-ыг хянах, сэтгэгдлийн менежмент.
  3. Хууль ёсны байдал: Таны зөвшөөрөл
  4. Мэдээллийн харилцаа холбоо: Хуулийн үүргээс бусад тохиолдолд мэдээллийг гуравдагч этгээдэд дамжуулахгүй.
  5. Өгөгдөл хадгалах: Occentus Networks (ЕХ) -с зохион байгуулсан мэдээллийн сан
  6. Эрх: Та хүссэн үедээ мэдээллээ хязгаарлаж, сэргээж, устгаж болно.

  1.   элав гэж хэлэв

    Өө! Сонирхолтой 😀

    1.    eliotime3000 гэж хэлэв

      Зүүн доод буланд та дамжуулах, байршуулах, татаж авахад ашигладаг зурвасын өргөнийг хязгаарлах боломжтой. Transmission-тэй холбоотойгоор надад ямар ч асуудал тулгараагүй.

      1.    жигнэмэг гэж хэлэв

        Гэхдээ энэ нь автоматаар хийгддэг бөгөөд бас график интерфейсгүй дамжуулалт байдаг тул танд ийм функц байхгүй байж магадгүй юм.

      2.    Joaquin гэж хэлэв

        Сайн байцгаана уу
        Тиймээ би үүнийг аль хэдийн мэдсэн. Гэхдээ энэ бол яг миний хийхийг хүсэхгүй байгаа зүйл юм.
        Би интернетийн төлөвлөгөө маш муу (512KB бөгөөд энэ нь миний нутаг дэвсгэрийн хамгийн шилдэг нь юм).

        Миний зохиолоор бүх зүйлийг гараар хийх гэж санаа зовдоггүй. Та хөтөч дээр хуудас нээгээд Transmission нь бүх зурвасын өргөнийг эзэлж байгаа тул хуудсыг ачаалахад хэсэг хугацаа шаардагдана гэж бодъё (хамгийн ихдээ 1 ′, гэхдээ сэтгэл түгшээж байна). Би хоёр минутын зайтай "цагийн хязгаарыг идэвхжүүлж" дууссан. Энэ нь автомат бөгөөд бараг агшин зуур (Firefox-ийн илгээсэн, хүлээн авсан KB-г 5 секунд тутамд шалгадаг).

        Үнэндээ тэр интернетийн хурдтай миний хувьд энэ нь маш сайн юм. Үүнийг хийдэг өөр програмыг би мэдэхгүй, эс тэгвэл үүнийг хийхгүй байсан. Миний харсан хүмүүс зөвхөн зурвасын өргөнийг хязгаарладаг, гэхдээ автоматаар биш.

        Би тодорхой байсан гэж найдаж байна. Уншсанд баярлалаа!

        1.    Joaquin гэж хэлэв

          Уучлаарай, би буруу бодож байсан. Тэд 512KB биш харин Kbits юм. (Энэ нь 1/2 "Мега"). Миний татаж авах хамгийн дээд хэмжээ нь 75KB / s ба 50KB / s-ийн байршуулалт юм. Энэ үед интернет сайн байх болно, эс тэгвэл хэвийн хэмжээ нь 48 ба 23 байна.

    2.    Joaquin гэж хэлэв

      Баярлалаа!

  2.   жигнэмэг гэж хэлэв

    Сонирхолтой нь би qBittorrent ашигладаг бөгөөд шилжүүлэгчийг хязгаарлалтад ашигладаг.

    Бичлэг эдгээр өнгөөр ​​гоё харагдаж байна 😉

    1.    Joaquin гэж хэлэв

      Өнгөд баярлалаа. Би үүнд тийм ч сайн биш, маш олон тексттэй маш урт бөгөөд нэгэн хэвийн юм шиг санагддаг.

  3.   Хорхе гэж хэлэв

    Би хувьдаа дамжуулалт-демон ба firefox-ийг шууд програмын табтай хамт ашигладаг тул гадны програмтай хамт алхдаггүй эсвэл torrent эсвэл идэвхжсэн яст мэлхийг үргэлжлүүлэхээ мартдаггүй (би үүнийг утаснаасаа хянах боломжтой). Үйлчилгээг эхлүүлэхийн тулд хэрэглэгчээ нэмж оруулна уу (жишээлбэл: adduser –disabled-password nethogs), /etc/init.d дээр демон дээр текст файл үүсгэж (жишээ нь: nethogs-daemon), дараа нь дебийн төрлөөр "update" хэлбэрээр оруулна уу. -rc.d nethogs-daemon-ийн анхдагч тохируулга "нь өөрөө эхлэх болно.

    Текст файл нь бас скрипт бөгөөд та өөрийн скриптийг нэгтгэж болно.
    Энэ нь танд тусалж чадах эсэхийг дамжуулах демоныг эхлүүлэх, нетгог эхлүүлэхэд ашиглаж болох эсэхийг үзээрэй https://trac.transmissionbt.com/wiki/Scripts/initd

    1.    Joaquin гэж хэлэв

      Сайн байна уу!
      Би ойлгож байгаа эсэхийг харцгаая: энэ нь Transmission-ийг эхлүүлэх үед эхлүүлэх, унтраах эсвэл дахин асаахад зогсоох явдал юм. Энэ нь үргэлж өөрөө эхэлдэг бөгөөд татаж авч эхэлдэг тул би ямар ч асуудалгүй болно (би үүнийг Xfce програмыг эхлүүлэх үед нэмж оруулсан).

      Миний асуудал бол хэрэв би скриптийг rc.local эсвэл init.d дээр байрлуулсан бол компьютер скриптийг хэрхэн зогсоодгийг мэдэхгүй байна. Энэ нь мэдээжийн хэрэг, PC-г унтраах / дахин эхлүүлэх үед бүх процессууд дуусах болно (мөн тэдэнтэй хамт Transmission, Nethogs гэх мэт) гэхдээ миний скриптэд юу тохиолдохыг мэдэхгүй байна.

      Энэ яагаад намайг зовоодог юм бэ? Скрипт нь / tmp файлыг үүсгэж дамжуулах хурдыг удирддаг. Хэрэв би үүнийг терминал дээр ажиллуулаад гэнэт зогсоовол (жишээ нь CTRL + c-тэй бол), скрипт хаагдахаасаа өмнө анхдагч хурдыг сэргээж (шаардлагатай бол) дараа нь Nethogs-г зогсоож файлыг / tmp-ээс устгана. Сул файл, дэвсгэр процесс үлдээхгүйн тулд аль болох "мэргэжлийн" болгохыг хичээсэн.

      Таны хэлсэн зүйлийн талаар би "шууд програмын таб" гэж юу болохыг ойлгосонгүй.

      1.    Хорхе гэж хэлэв

        Аппликешн таб нь байнгын таб бөгөөд үргэлж нээлттэй, firefox дотор багасдаг http://i.imgur.com/a5i0aP3.png (таб дээрх контекст цэс, «paste tab» дээр дарна уу). Демонууд TERM дохио илгээхдээ гарсны дараа хэсэг хүлээгээд өгөгдлөө хадгалдаг. Скриптээс гарахдаа өмнө нь өгсөн холбоос дээр start-stop-daemon гэж дуудаж дамжуулалтыг зогсоохыг зааж өгснөөр та "killall nethogs" -ийг болон үүнд StopScript агуулсан зүйлийг буулгаж болно. Энэ тохиолдолд init скриптийг тодорхой хэрэглэгчийн оронд root гэж нэрлэх хэрэгтэй болно, учир нь энэ нь давуу эрх шаарддаг.

        1.    Joaquin гэж хэлэв

          Зөвлөгөө өгсөнд баярлалаа. Цаг зав гармагц би үүнийг туршиж үзэх болно!

  4.   факундо гэж хэлэв

    агуу, хурдан холболттой байсан ч гэсэн үзэхийн тулд дамжуулалтыг хязгаарлаж, цаг хугацаагаа "алдах" тул та ийм таагүй зүйлтэй тулгарлаа.
    Би боломжтой үедээ туршиж үзэх гэж байна. Сайн байцгаана уу, талархал илэрхийлье !!

    1.    Joaquin гэж хэлэв

      Чамд баярлалаа! Энэ нь танд тусална гэж найдаж байна!

      1.    Факундо гэж хэлэв

        Хоакин ахин сайн байцгаана уу. Та бүх сэтгэгдэлд хариу бичихэд анхаарч байгаа тул би энэ давуу талыг ашиглах гэж байгаа бөгөөд танаас хоёр шинэ тоглогчийн асуулт асуух гэж байна.
        Нэгдүгээрт, "awk" скрипт суулгасан эсэхийг би яаж мэдэх вэ? Би Debian 7.2 ашигладаг.
        Хоёрдугаарт, оо кодоор юу хийхээ мэдэхгүй байна. Би текст засварлагч аваад "bandwidth-controller.sh" нэртэй файлд хадгалаад "./band-width-control.sh" гэж ажиллуулах хэрэгтэй. Энэ бол миний хамгийн их алдагдсан хэсэг юм.
        Гуравдугаарт: Үүнийг root болгон ажиллуулна гэж хэлэхэд хэрэглэгчийн root болгон өөрчлөх шаардлагатай юу эсвэл sudo-той хамт хэрэглэх шаардлагатай юу?

        Хэрэв надад энэ сэдвээр санал болгох унших зүйл байгаа бол би талархаж байна.
        Баярлалаа!

  5.   Жискар гэж хэлэв

    Тийм ч учраас би Transmission програмыг үргэлж устгаж, Deluge програмыг суулгаж өгдөг. Үүний төлөө, мөн Deluge надад санал болгож буй зүйлсийн хувьд нөгөөгийнх нь авчирдаггүй зүйлийг санал болгож байна.

    1.    Joaquin гэж хэлэв

      Сайн уу, би Дэлүгийг мэдэхгүй байна. Миний гол асуудал бол интернетийн үйлчилгээ. Үүнийг ашиглан би үүнийг бүрэн хэмжээгээр шахаж байна.

  6.   Панда гэж хэлэв

    Сайн уу. Миний зурвасын өргөн хязгаарлагдмал тул би энэ скриптийг туршиж үзсэн. Гэхдээ энэ нь ажиллахгүй байна. алдаа нь nethogs -t тушаалд байх шиг байна. Энэ нь "Эхний пакет ирэхийг хүлээж байна (sourceforge.net bug 1019381-ийг үзнэ үү)" гэсэн алдааг буцааж өгдөг. Би гаа, archlinux-ийг туршиж үзсэн. Тэр тушаал нь юу гэсэн үг вэ? Аппликейшн бүрийн ашигладаг зурвасын өргөнийг энгийн текстээр хэвлэх ёстой гэж бодож байна. Сүлжээг сонсох боломжийг олгодог өөр програмыг та мэдэх үү?

    1.    Joaquin гэж хэлэв

      Сайн байцгаана уу
      Энэ бол Nethogs-ийн алдаа юм. Энэ нь надад бас харагдаж байна, гэхдээ ямар ч байсан ажиллана.

      Nethogs хийдэг зүйл бол хамгийн их зурвасын өргөнийг ашигладаг процессыг бодит цаг хугацаанд нь харуулах явдал юм. Скриптэд түүний гаралтыг "net.list" текст файлд хадгалдаг тул дараа нь шүүж болно.

      Скрипт нь зөвхөн Transmission (BitTorrent клиент) болон Firefox (вэб хөтөч) -тэй ажилладаг. Энэ нь Firefox вэб хуудас ачаалах үед Transmission-ийн нэвтрүүлэх чадварыг хязгаарлах явдал юм. Та дараахь зүйлийг суулгах хэрэгтэй: Nethogs, Transmission, Transmission-remote болон Firefox.

      Энэ бүх зүйлийг бичлэгт тайлбарласан тул таны асуудал юу болохыг мэдэхгүй байна.

      Жич: Зөв бичиж, зөв ​​бичгийн дүрмээ сайжруулаарай. Энэ бол текст мессеж биш сэтгэгдэл юм.

      1.    Панда гэж хэлэв

        зохиол надад тохирохгүй байна. тэр алдааны мэдэгдлийг олон удаа хэвлэдэг. "nethogs -t" -ийг юу хийж байгааг харахын тулд терминал дээр ажиллуулаарай, гэхдээ энэ нь юу ч хэвлэхгүй, зөвхөн алдаа. миний компьютер дээр ажиллахгүй байна. Энэ нь процессор, зурвасын өргөнийг харуулахгүйгээр -t гүйлгэж хэвлэхтэй ижил төстэй зүйлийг хэвлэх ёстой гэж би төсөөлж байна. гэхдээ миний хувьд энэ нь нэгийг нь ч хэвлэхгүй. скриптийг боловсруулахдаа аль дистро ашигласан бэ?

        1.    Joaquin гэж хэлэв

          Хэрэв та анхааралтай ажиглавал нийтлэлд ашигласан бүх програм хангамж, түүний хувилбарууд багтсан болно. Яагаад алдаа гаргасныг мэдэхгүй ч "nethogs -t" -ийг ажиллуулах болгонд надад гарч ирдэг. Скрипт дээр энэ нь 2 every тутамд тохиолдох болно.

          Таныг nethogs ажиллуулах үед сүлжээ ашиглах процесс байхгүй тул ямар ч үр дүн гарахгүй байж магадгүй юм.

          Скриптийг root хэлбэрээр ажиллуулах ёстой, учир нь nethogs нь тухайн хэрэглэгчийн ажиллах шаардлагатай байдаг.

          одоо би нэг чухал зүйлийг санаж, яагаад энэ нь танд тохирохгүй байгааг мэдэж байна:

          Та скриптийг ЗАСАХ ёстой бөгөөд энгийн хэрэглэгчийн нэрийг өөрчлөх хэрэгтэй. Скриптэд үүнийг "joaquin" гэж нэрлэдэг. Та үүнийг хэрэглэгчийн нэрээр солих ёстой.

          Уучлаарай, би үүнийг ухаараагүй, нэрийг хувьсагч дотор оруулах ёстой байсан. Гол нь би үүнийг ийм ерөнхий болгох тухай бодож байгаагүй, зүгээр л та нарт харуулахыг хүссэн юм, ингэснээр та үүнийг харж, хүссэн хүмүүс үүнийг хэрхэн хийх талаар санаа олж авах болно. Би үүнийг ямар ч компьютер дээр ажиллах болно гэсэн үүднээс хийгээгүй, цаг хугацаа шаарддаг, яаж програмчлахаа мэдэхгүй, зарим зүйл надад тохиолддог.

          Амжилт хүсье, ямар ч зүйл дахин асуугаарай. Мөн киноны бичлэг, сэтгэгдлийг дахин уншина уу.

  7.   Факундо гэж хэлэв

    Сайн уу Жоакин, надад дараах зүйлийг хэлээрэй.

    алсын дамжуулалт: (http://localhost:9091/transmission/rpc/) Сервертэй холбогдож чадсангүй
    ioctl нь сонгосон төхөөрөмжид зориулж local IP-ийг байгуулж байх үед алдаа гарав. Та төхөөрөмжийг тушаалын мөрөнд зааж өгч болно.

    ямар нэгэн санаа байна уу ?? баярлалаа!

    1.    Joaquin гэж хэлэв

      Сайн байцгаана уу
      Уучлаарай гэхдээ надад ямар ч ойлголт алга have
      Алдааг ойлгосноос харахад энэ нь ioctl-тэй холбоотой асуудал боловч энэ нь юу болохыг би мэдэхгүй байна.

      Магадгүй та скриптийг зогсоож, дамжуулах зайнаас зарим тохируулгуудтай нь ажиллаж байгаа эсэхийг шалгаж үзээрэй (man хуудсыг "man" тушаалаар уншина уу).