腳本重擊:自動控制傳輸帶寬

大家好。 這是我的第二篇文章。 我通常不會寫帖子,除非我有一些好分享的東西,而且這次我肯定會有很多人感興趣的東西。

幾個月前,我曾想製作一個腳本來限制應用程序的帶寬,但是我遇到了一些問題和錯誤,這使我感到很困難,因此我對在 論壇 de <º DesdeLinux 萬一有人有主意。

所以我離開了一段時間,有一天我決定恢復腳本。 我做了很多測試,讀了很多有關bash的文章,業餘時間我頭疼,但我做到了!

我非常滿意,因此我決定與您分享我的小腳本,以便您可以使用和改進它。 我計劃在GPLv3下許可它,但這是我的第一個項目,所以我不太確定如何做到這一點(我需要曾經做過此事的人的建議)。

好吧,現在我將解釋我的需求和解決問題的方式。

情況
我有512Kbs的互聯網計劃,因此我使用 傳輸 作為BitTorrent客戶端下載大型文件(例如LibreOffice和某些GNU / Linux發行版)。 以這種速度下載需要很長時間,問題出在使用網絡瀏覽器時 火狐瀏覽器:需要很長時間才能加載。

當我連接到Internet時,我激活了Transmission的上載和下載時間限制,並等待Firefox加載,然後再次啟動種子。 如您所見,這樣做幾次很乏味。 更不用說有時候我會完全暫停所有種子,然後忘記再次激活它們,從而浪費了寶貴的時間來上傳/下載種子。


對於這個問題,我決定在Bash中創建一個腳本,該腳本主要執行以下操作:

1. 檢查傳輸是否正在運行並且沒有洪流暫停。 如果是這樣,請重新打開洪流。

2. 確認Firefox正在運行。 然後,它獲取它發送和接收的KB / s並將其保存在文件中。

3. 如果瀏覽器的上傳/下載KB / s超出參考範圍,則更改傳輸上傳/下載設置。

這允許當想要訪問網頁時,當瀏覽器發送請求時,傳輸文件上傳受到限制,而當接收到頁面數據時,下載受到限制。 一次訪問多個頁面時,此方法非常有用,並且結果實際上與禁用傳輸時相同。

最大的優點是它是全自動的,不需要我的干預。

劇本
儘管它可以用來控制任何應用程序的帶寬消耗,但目前它僅用於解決一個非常特殊的問題。 但是進行修改不是很困難。

要求
為了使它正常工作,必須安裝該應用程序«網絡豬“。

在這種情況下,由於腳本可與Firefox和Transmission一起使用,因此除了``transmission-remote''之外,還需要安裝這些應用程序,這是改變種子的上傳和下載值的原因。 我還在腳本“ awk”中使用。 我提到它是因為我不知道所有發行版是否都安裝了它。

使用的軟件
腳本使用的應用程序及其工作系統的列表。

•Debian GNU / Linux 6.0.8
• Linux 2.6.32-5-686
• 火狐 24.0
•變速箱2.03(11030)
• 網絡豬 0.7.0

執行
它必須以root身份運行,因為 網絡豬 只能與該用戶一起運行,但是 遠程傳輸 它由普通用戶通過命令執行 他的。

該腳本使用內部Bash命令 陷阱 當通過SIGINT(CTRL + c)或SIGTERM信號停止傳輸時,可以使用它來恢復傳輸加載/卸載默認值。

我仍然不確定如何在啟動時運行它,以及在我關閉或重新啟動計算機時如何停止運行。 我當時想在文件中放一個鏈接 在/etc/rc.local 但我不知道它是否會工作,我也不真正了解/ etc /的工作方式初始化 (我看到了一些腳本,甚至 骨架,但我聽不懂)。 如果有人可以幫助我,我將非常感激。

伙計們,就是這樣。 希望我的一點貢獻對​​您有用,如果您願意,您可以改善它。 如果文件存在安全問題,我將很高興閱讀您的意見和建議以及建議(我不是程序員,我會不時做一些事情)。

我知道通過一些修補程序,它將來可能會成為一個很好的應用程序,因為我不知道有任何程序可以做到這一點。 例如,我想到我可以在其中有一個圖形界面 善意 並能夠選擇我們要優先使用的帶寬(網絡瀏覽器,更新管理器,文件傳輸等)和不同參考值的應用程序。 是的,它有點雄心勃勃,但很有用。

您可以在 麵食。 非常感謝您的閱讀!!


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   拉夫 他說:

    哦! 有趣的😀

    1.    埃利奧時間3000 他說:

      在左下角,您可以選擇限制傳輸在上傳和下載時佔用的帶寬。 使用傳輸,我沒有任何問題。

      1.    餅乾 他說:

        但這是自動的,並且還有沒有圖形界面的傳輸功能,因此您可能沒有這麼近的功能。

      2.    華金 他說:

        你好,你好嗎。
        是的,我已經知道了。 但這正是我不想做的。
        我的互聯網計劃非常糟糕(512KB,這是我所在地區最好的)。

        使用我的腳本,我不用擔心手工做所有事情。 想像一下,您在瀏覽器中打開了一個頁面,此時傳輸正在佔用所有帶寬,因此該頁面需要花費一些時間來加載(最多1′,但這很令人生氣)。 我對每兩分鐘“激活時間限制”感到厭倦。 這是自動的,幾乎是即時的(它每5秒檢查Firefox發送和接收的KB)。

        以我的互聯網速度來看,這確實很棒。 我也不知道有另一個應用程序可以做到這一點,否則它就不會做到這一點。 我見過的那些僅限制帶寬,而不是自動限制。

        我希望我很清楚。 感謝您的閱讀!

        1.    華金 他說:

          對不起我錯了。 它們不是512KB,而是Kbit。 (即1/2“超級”)。 我最多可以下載75KB / s和50KB / s。 就是說互聯網正常,否則正常是48和23。

    2.    華金 他說:

      格拉西亞斯!

  2.   餅乾 他說:

    有趣的是,我使用qBittorrent並將開關用於限制。

    這些顏色的帖子看起來不錯nice

    1.    華金 他說:

      感謝您的顏色。 我不是很好,它看起來很長而且很單調。

  3.   豪爾赫 他說:

    就個人而言,我使用帶有實時應用程序選項卡的Transmission-daemon和firefox,因此我不會使用外部程序,也不會忘記繼續torrent或激活的Turtle(並且可以通過手機進行控制)。 要啟動服務,需要添加一個用戶(例如:adduser –disabled-password nethogs),在/etc/init.d中為該守護程序創建一個文本文件,其名稱為(例如:nethogs-daemon),然後在debian中是鍵入“ update-rc.d nethogs-daemon默認值”,以便它自行啟動。

    該文本文件也是bash腳本,您可以將其合併到其中。
    看看這是否可以幫助您,它可以用於啟動傳輸守護程序,它可以用於啟動nethogs https://trac.transmissionbt.com/wiki/Scripts/initd

    1.    華金 他說:

      您好!
      看看我是否理解:這是在啟動時啟動變速箱,在關閉或重新啟動時停止變速箱。 有了它,我就沒問題了,因為它總是自己啟動並開始下載(我在Xfce啟動時將其添加到了應用程序中)。

      我的問題是,如果將腳本放在rc.local或init.d中,我不知道計算機如何停止腳本。 也就是說,顯然,在關閉/重新啟動PC時,所有進程都將終止(以及傳輸和Nethogs),但我不知道我的腳本會發生什麼。

      那為什麼打擾我呢? 該腳本在/ tmp中創建一個文件,並控制傳輸速度。 如果我在終端中運行它並突然將其停止(例如使用CTRL + c),則關閉前的腳本將恢復默認速度(以防萬一),然後停止Nethogs並從/ tmp中刪除該文件。 我試圖使其盡可能“專業”,以免留下任何鬆散的文件或後台進程。

      關於您所說的內容,我不明白什麼是“實時應用程序標籤”。

      1.    豪爾赫 他說:

        應用程序標籤是永久標籤,在firefox中始終打開並最小化 http://i.imgur.com/a5i0aP3.png (選項卡上的上下文菜單,單擊“粘貼選項卡”)。 當守護程序發送TERM信號時,它們會等待一段時間,直到註銷後再保存數據。 請注意,在退出腳本之前給出的鏈接中,調用start-stop-daemon並告知傳輸停止,您可以在其中粘貼“ killall nethogs”及其包含StopScript的內容。 在這種情況下,init腳本必須以root用戶而不是特定用戶的身份調用,因為它需要特權。

        1.    華金 他說:

          好,謝謝你的提示。 我一有時間就嘗試!

  4.   法肯多 他說:

    太好了,我遇到了不便之處,因為即使您的連接速度很快,在瀏覽時也不得不限制傳輸,從而浪費時間。
    如果可以的話,我會嘗試的。 問候和感謝!

    1.    華金 他說:

      謝謝你! 希望這可以幫到你!

      1.    法孔多 他說:

        你好,華金。 我看到您正在處理所有評論,因此我將充分利用這一點,並向您問幾個新手問題。
        首先,如何知道我是否安裝了“ awk”腳本? 我使用Debian 7.2。
        其次,我不知道如何處理粘貼代碼。 我必須抓住一個文本編輯器,並將其保存到一個名為“ bandwidth-controller.sh”的文件中,然後將其作為“ ./band-width-control.sh”運行。 這是我最迷惑的部分。
        第三:當您說要以root身份運行它時,是否有必要從用戶更改為root或使用sudo?

        如果您有任何建議向我推薦該主題,我將不勝感激。
        的問候!

  5.   Giskard 他說:

    這就是為什麼我總是卸載Transmission並安裝Deluge的原因。 好吧,為此,Deluge為我提供了其他人沒有帶來的更多東西。

    1.    華金 他說:

      嗨,我不認識大雨。 我的主要問題是互聯網服務。 以此,我將其壓縮到最大。

  6.   熊貓 他說:

    你好我的帶寬也很有限,所以我嘗試了此腳本。 但這不起作用。 該錯誤似乎出在nethogs -t命令中。 返回錯誤“等待第一個數據包到達(請參閱sourceforge.net錯誤1019381)”我嘗試了mint,archlinux和其他操作。 該命令應該返回什麼? 我想我應該以純文本格式打印每個應用程序使用的帶寬。 您是否知道另一個允許您收聽網絡的程序?

    1.    華金 他說:

      你好,你好嗎。
      那是一個Nethogs錯誤。 在我看來,它也是如此,但是它仍然可以工作。

      Nethogs所做的是實時顯示消耗最大帶寬的過程。 在腳本中,其輸出保存在文本文件“ net.list”中,以便稍後進行過濾。

      該腳本僅適用於Transmission(BitTorrent客戶端)和Firefox(網絡瀏覽器)。 它的作用是限制Firefox加載網頁時傳輸的帶寬。 您需要安裝:Nethogs,Transmission,Remote-remote和Firefox。

      所有這些都在帖子中進行了解釋,所以我不知道您的問題是什麼。

      PS:請正確書寫並改善拼寫。 這是評論,而不是短信。

      1.    熊貓 他說:

        該腳本對我不起作用。 多次打印該錯誤消息。 在終端中運行“ nethogs -t”以查看其功能,但不輸出任何內容,僅顯示錯誤。 在我的電腦上無法正常工作。 我想像它應該打印出與在沒有-t的情況下執行打印時類似的內容,從而顯示出進程和帶寬。 但就我而言,它不會打印任何內容。 您使用哪個發行版來開發腳本?

        1.    華金 他說:

          如果仔細觀察,該帖子將包含所有使用的軟件及其版本。 我不知道為什麼會出錯,但是每次運行“ nethogs -t”時,它都會出現。 在腳本中,它將每2英寸發生一次。

          可能是因為當您運行nethogs時,沒有使用網絡的進程,這就是為什麼您沒有得到任何輸出的原因。

          該腳本必須以root用戶身份運行,因為nethogs需要該用戶才能運行。

          現在我想起了一些重要的事情,我知道為什麼它對您不起作用:

          您必須編輯腳本並更改普通用戶的名稱。 在腳本中,它稱為“華金”。 您必須將其更改為用戶名。

          抱歉,我沒有意識到,我應該將名稱放入變量中。 事實是,我沒想到讓它變得如此籠統,我只是想向您展示它,以便您可以看到它,並且那些想要得到它的人可以知道如何做。 我這樣做並不是想在任何計算機上都可以工作,這需要時間,而且我也不知道如何編程,所以有些事情發生在我身上。

          祝你好運,再問什麼。 並且請再次閱讀腳本的文章和評論。

  7.   法孔多 他說:

    您好華金,告訴我以下內容:

    遠程傳輸http://localhost:9091/transmission/rpc/)無法連接到服務器
    為所選設備eth0建立本地IP時,ioctl失敗。 您可以在命令行上指定設備。

    有任何想法嗎?? 謝謝!

    1.    華金 他說:

      你好,你好嗎。
      打擾一下,但我不知道😀
      從我的理解來看,錯誤是ioctl的問題,但我不知道那是什麼。

      也許您可以嘗試停止腳本,並查看Transmission-Remote是否可以使用其某些選項(請使用“ man”命令閱讀其手冊頁)。