Усім привіт. Це мій другий допис. Зазвичай я не пишу дописи, якщо у мене немає чогось хорошого, щоб поділитися, і цього разу у мене є те, що, безсумнівно, зацікавить багатьох.
Кілька місяців тому я думав створити сценарій для обмеження пропускної здатності програм, але у мене були деякі проблеми та помилки, які ускладнили мене, тому я висловив сумнів у форум de <º DesdeLinux на випадок, якщо хтось мав ідею.
Тож я залишив це на деякий час і одного дня вирішив відновити сценарій. Я багато тестував, багато читав про баш, і у вільний час боліли голови, але я це робив !!
Я маю величезне задоволення, і тому я вирішив поділитися з вами своїм маленьким сценарієм, щоб ви могли його використовувати та вдосконалювати. Я планую ліцензувати його під GPLv3, але це мій перший проект, тому я не зовсім впевнений, як це зробити (мені потрібна порада від того, хто це робив раніше).
Ну, зараз я поясни, якою була моя потреба і що я зробив для вирішення проблеми.
Ситуація
У мене є план в Інтернеті на 512 Кб, тому я використовую передача як клієнт BitTorrent для завантаження великих файлів (наприклад, LibreOffice та деяких дистрибутивів GNU / Linux). З такою швидкістю завантаження займають багато часу, і проблема полягає у використанні веб-браузера Firefox: завантаження триває довго.
Коли я підключаюся до Інтернету, я активую обмеження часу завантаження та завантаження та чекаю завантаження Firefox, а потім знову запускаю торренти. Як ви побачите, робити це пару раз нудно. Не кажучи вже про те, що іноді я відразу призупиняю всі торренти, а потім забуваю їх увімкнути знову, що призводить до витраченого дорогоцінного часу на завантаження / завантаження торрентів.
Рішення
Для цієї проблеми я вирішив створити сценарій у Bash, який в основному робить наступне:
1. Переконайтесь, що передача працює, а торрент не призупинено. Якщо так, увімкніть торренти знову.
2. Переконайтеся, що Firefox працює. Потім він отримує відправлені та отримані ними КБ / с і зберігає їх у файлі.
3. Якщо завантаження / завантаження браузера в КБ / с перевищує контрольний діапазон, налаштування передачі / завантаження передачі змінюються.
Це дозволяє, що при бажанні отримати доступ до веб-сторінки, коли браузер надсилає запит, завантаження файлу передачі обмежується, а коли дані сторінки отримуються, завантаження обмежується. Це чудово працює при одночасному доступі до кількох сторінок, а результати насправді такі ж, як і при відключеній передачі.
Велика перевага полягає в тому, що він повністю автоматичний і не вимагає мого втручання.
Сценарій
Незважаючи на те, що він може використовуватися для контролю споживання смуги пропускання будь-якого додатка, на даний момент він написаний лише для вирішення дуже конкретної проблеми. Але зробити модифікації не дуже складно.
Вимога
Для його нормальної роботи необхідно мати додаток «сіть-собаки».
У цьому випадку, оскільки сценарій працює з Firefox та Transmission, необхідно встановити ці додатки, крім "віддаленої передачі", що змінює значення завантаження та завантаження торрентів. Я також використовую "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 пастка За допомогою якого можна відновити значення навантаження / розвантаження за замовчуванням, коли воно зупинене за допомогою сигналів SIGINT (CTRL + c) або SIGTERM.
Досі не знаю, як це зробити, щоб запустити його під час запуску та зупинити, коли я вимикаю або перезавантажую комп'ютер. Я думав вставити посилання у файл /etc/rc.local але я не знаю, чи це спрацює, і я насправді не розумію, як працює / etc /ініц.д (Я навіть бачив кілька сценаріїв, які там є скелет, але я їх не розумію). Якщо хтось зможе мені допомогти, буду дуже вдячний.
Ну люди, це все. Я сподіваюся, що мій невеликий внесок буде вам корисний, і ви зможете його покращити, якщо забажаєте. Я з радістю прочитаю ваші думки та рекомендації, а також пропозиції, якщо у файлі виникнуть проблеми із захистом (я не програміст, час від часу роблю лише кілька речей).
Я знаю, що з деякими виправленнями це може стати чудовим додатком у майбутньому, тому що я не знаю жодної програми, яка робить те саме. Наприклад, мені здається, що у мене міг бути графічний інтерфейс зенітність і мати можливість вибирати програми, яким ми хочемо визначити пріоритет у використанні пропускної здатності (веб-браузер, менеджер оновлень, передача файлів тощо) та різні контрольні значення. Так, це дещо амбітно, але цілком корисно.
Ви можете завантажити сценарій в вставляти. Велике спасибі за читання !!
О! Цікаво 😀
У нижньому лівому куті ви маєте можливість обмежити пропускну здатність, яку передача використовує як при завантаженні, так і при завантаженні. З трансмісією у мене не було жодних проблем.
Але це автоматично, і існує також передача без графічного інтерфейсу, тому у вас може бути не така функція під рукою.
Привіт як ти.
Так, я це вже знаю. Але саме цього я не хочу робити.
У мене дуже поганий план в Інтернеті (512 КБ, і це найкращий варіант у моєму районі).
З моїм сценарієм я не турбуюся про те, щоб робити все вручну. Уявіть, що ви відкриваєте сторінку в браузері, і Transmission займає всю пропускну здатність на той момент, тому сторінка завантажується (не більше 1 ′, але це дратує). Я закінчую "активувати обмеження часу" кожні дві хвилини. Це автоматично і майже миттєво (перевіряє KB, надіслану та отриману Firefox кожні 5 секунд).
Насправді в моєму випадку з такою швидкістю Інтернету це чудово. Також я не знаю жодної програми, яка б це робила, інакше вона б цього не зробила. Ті, які я бачив, обмежують лише пропускну здатність, але не автоматично.
Сподіваюся, мені було ясно. Дякую за читання!
Вибачте, я помилився. Вони не мають розміру 512 КБ, швидше це Кбіти. (Тобто 1/2 "Мега"). Максимум, що я можу завантажити, - 75 КБ / с і 50 КБ / с. Це тоді, коли з Інтернетом все гаразд, інакше нормальним є 48 і 23.
Спасибо!
Цікаво, що я використовую qBittorrent і використовую перемикач для обмежень.
Публікація виглядає гарно з цими кольорами 😉
Дякую за кольори. Мені це не дуже вдало, це здається дуже довгим і одноманітним із стільки тексту.
Особисто я використовую передачу-демон і firefox з активною вкладкою програми, тому я не ходжу із зовнішніми програмами і не забуваю продовжувати торренти або активовану черепаху (і я можу керувати цим зі свого телефону). Для запуску служби додається користувач (наприклад: adduser –disabled-password nethogs), у /etc/init.d створюється текстовий файл для демона з ім'ям (наприклад: nethogs-daemon), а потім у debian це введіть "update-rc.d nethogs-daemon за замовчуванням", щоб він запускався сам.
Текстовий файл - це також скрипт bash, в який ви можете об'єднати свій сценарій.
Подивіться, чи може це допомогти вам, його можна використовувати для запуску демона передачі, можна використовувати для запуску мережевих собак https://trac.transmissionbt.com/wiki/Scripts/initd
Здрастуйте!
Давайте подивимось, чи я розумію: це для запуску передачі під час запуску та зупинки її під час вимкнення чи перезапуску. З цим я не маю проблем, оскільки він завжди запускається сам і починає завантажуватися (я додав його до програм під час запуску в Xfce).
Моя проблема полягає в тому, що якщо при розміщенні сценарію в rc.local або init.d я не знаю, як комп'ютер зупиняє сценарій. Тобто, очевидно, що при вимкненні / перезавантаженні ПК усі процеси припиняються (а разом з ними і передача, і Nethogs), але я не знаю, що станеться з моїм сценарієм.
І чому це мене турбує? Сценарій створює файл у / tmp і контролює швидкість передачі. Якщо я запускаю його в терміналі і раптом зупиняю (наприклад, за допомогою CTRL + c), сценарій перед закриттям відновлює швидкості за замовчуванням (у разі необхідності), а потім зупиняє Nethogs і видаляє файл з / tmp. Я намагався зробити його максимально "професійним", щоб він не залишав вільних файлів або фонових процесів.
Щодо того, що ви сказали, я не зрозумів, що таке "активна вкладка програми".
Вкладка програми - це постійна вкладка, вона завжди відкрита та зведена до мінімуму у Firefox http://i.imgur.com/a5i0aP3.png (контекстне меню на вкладці, клацніть на «вставити вкладку»). Коли демони надсилають сигнал TERM, вони чекають деякий час, доки вони не закриють сесію, і зберігають свої дані. Зверніть увагу, що у посиланні, яке я давав раніше, коли виходив із скрипта, викликає start-stop-daemon і повідомляє зупинку передачі, там ви можете вставити "killall nethogs" і те, що він містить StopScript. Сценарій init в цьому випадку вам доведеться викликати як root, а не конкретного користувача, оскільки йому потрібні привілеї.
Ну спасибі за підказку. Як тільки встигаю, спробую!
чудово, я зіткнувся з цим недоліком, оскільки навіть якщо у вас швидке з'єднання, ви змушені обмежити передачу, поки хочете займатися серфінгом і тим самим "витратити час".
Я збираюся спробувати, коли зможу. Вітаю та дякую !!
Дякую тобі! Сподіваюся, це може вам допомогти!
Знову привіт Хоакін. Я бачу, що ви піклуєтесь про відповідь на всі коментарі, тому я збираюся скористатися цим, і я задам вам пару питань новачка.
По-перше, як я можу дізнатись, чи встановлений у мене сценарій "awk"? Я використовую Debian 7.2.
По-друге, я не знаю, що робити з кодом вставки. Мені потрібно взяти текстовий редактор і зберегти його у файл, який називається "bandwidth-controller.sh", а потім запустити як "./band-width-control.sh". Це та частина, де я найбільше загубився.
По-третє: Коли ви говорите, щоб запустити його як root, чи потрібно переходити від користувача до root або цього достатньо з sudo?
Якщо у вас є читання, щоб порекомендувати мені цю тему, я ціную це.
Привіт!
Ось чому я завжди видаляю передачу та встановлюю Deluge. Ну, за це та ще трохи речей, які пропонує мені Потоп, а інші не приносять.
Привіт, я не знаю Потопу. Моя головна проблема - Інтернет-сервіс. Цим я стискаю його на повну.
Привіт. моя пропускна здатність також обмежена, тому я спробував цей сценарій. Але це не працює. здається, помилка в команді nethogs -t. він повертає помилку "Чекаючи прибуття першого пакета (див. помилку sourceforge.net 1019381)", і я спробував mint, archlinux і нічого. Що ця команда повинна повернути? Думаю, мені слід надрукувати простим текстом пропускну здатність, яку використовує кожна програма. Чи знаєте ви ще одну програму, яка дозволяє слухати мережу?
Привіт як ти.
Це помилка Nethogs. Це здається мені також, але все одно працює.
Що робить Nethogs, це показує процеси, які споживають найбільшу пропускну здатність, у реальному часі. У сценарії його вихідні дані зберігаються у текстовому файлі "net.list", щоб потім його можна було відфільтрувати.
Сценарій працює лише з Transmission (клієнт BitTorrent) та Firefox (веб-браузер). Він обмежує пропускну здатність передачі, коли Firefox завантажує веб-сторінку. Вам потрібно встановити: Nethogs, Transmission, Transmission-remote та Firefox.
Це все пояснюється у дописі, тому я не знаю, в чому ваша проблема.
PS: Будь ласка, пишіть правильно та вдосконалюйте свій правопис. Це коментар, а не текстове повідомлення.
сценарій у мене не працює. друкує це повідомлення про помилку багато разів. запустіть "nethogs -t" у терміналі, щоб побачити, що він робить, але він нічого не друкує, лише помилка. на моєму ПК це не працює. Я думаю, що він повинен надрукувати щось подібне до того, що друкується при виконанні без -t, показуючи процеси та пропускну здатність. але в моєму випадку це нічого не друкує. який дистрибутив ви використовували для розробки сценарію?
Якщо ви уважно придивитесь, публікація містить усе використовуване програмне забезпечення та його версії. Я не знаю, чому помилка, але вона з'являється мені кожного разу, коли запускається "nethogs -t". У сценарії це відбуватиметься кожні 2 ″.
Можливо, коли ви запускаєте nethogs, жоден процес не використовує мережу, і тому ви не отримуєте жодного результату.
Сценарій повинен бути запущений як root, оскільки nethogs потребує цього користувача для роботи.
тепер я згадав щось важливе і знаю, чому у вас це не працює:
ВИ ПОВИННІ РЕДАКТУВАТИ сценарій та змінити ім'я звичайного користувача. У сценарії це називається "хоакін". Ви повинні змінити його на своє ім’я користувача.
На жаль, я цього не зрозумів, я мав би вказати ім'я у змінну. Що трапляється, так це те, що я не думав робити це таким загальним, я просто хотів показати це вам, щоб ви це побачили, а ті, хто хоче, могли отримати ідеї, як це зробити. Я робив це не з наміром, що це буде працювати на будь-якому комп’ютері, це займає час, і я не знаю, як програмувати, деякі речі трапляються зі мною.
Удачі, будь-що запитуйте ще раз. І, будь ласка, ще раз прочитайте пост та коментарі до сценарію.
Привіт Хоакін, скажи мені наступне:
віддалена передача: (http://localhost:9091/transmission/rpc/) Не вдалося підключитися до сервера
ioctl не вдалося встановити локальний IP для вибраного пристрою eth0. Ви можете вказати пристрій у командному рядку.
будь-які ідеї ?? Дякую!
Привіт як ти.
Вибачте, але я не маю уявлення 😀
Наскільки я розумію, про помилку йдеться, це проблема з ioctl, але я не знаю, що це таке.
Можливо, ви можете спробувати зупинити сценарій і перевірити, чи працює віддалений передавач з деякими його параметрами (прочитайте його сторінку довідки за допомогою команди "man").