Cześć wszystkim. To jest mój drugi post. Zwykle nie piszę postów, chyba że mam coś dobrego do udostępnienia i tym razem mam coś, co z pewnością zainteresuje wielu.
Kilka miesięcy temu zastanawiałem się nad stworzeniem skryptu ograniczającego przepustowość aplikacji, ale miałem pewne problemy i błędy, które mi to utrudniały, więc swoje wątpliwości zgłosiłem w foro de <° Z Linuksa gdyby ktoś miał pomysł.
Zostawiłem więc to na chwilę i pewnego dnia postanowiłem wznowić scenariusz. Zrobiłem dużo testów, dużo czytałem o bashu i miałem bóle głowy w wolnym czasie, ale zrobiłem to !!
Mam ogromną satysfakcję, dlatego postanowiłem podzielić się z Wami moim małym skryptem, abyście mogli go używać i ulepszać. Planuję licencjonować go w ramach GPLv3, ale to mój pierwszy projekt, więc nie jestem do końca pewien, jak to zrobić (potrzebuję rady od tego, kto zrobił to wcześniej).
Cóż, teraz wyjaśnię, jakie były moje potrzeby i co zrobiłem, aby rozwiązać problem.
Sytuacja
Mam plan internetowy o wielkości 512Kbs, dlatego używam Transmisja jako klient BitTorrent do pobierania dużych plików (takich jak LibreOffice i niektóre dystrybucje GNU / Linux). Przy takiej szybkości pobieranie zajmuje dużo czasu, a problem występuje podczas korzystania z przeglądarki internetowej Firefox: ładowanie zajmuje dużo czasu.
Kiedy łączę się z Internetem, aktywuję limity czasowe wysyłania i pobierania transmisji i czekam na załadowanie przeglądarki Firefox, a następnie ponownie uruchamiam torrenty. Jak zobaczysz, robienie tego kilka razy jest żmudne. Nie wspominając o tym, że czasami po prostu wstrzymuję wszystkie torrenty, a następnie zapominam o ich ponownej aktywacji, co prowadzi do marnowania cennego czasu na przesyłanie / pobieranie torrentów.
Rozwiązanie
W przypadku tego problemu zdecydowałem się stworzyć skrypt Bash, który zasadniczo wykonuje następujące czynności:
1. Sprawdź, czy transmisja jest uruchomiona i żaden torrent nie jest wstrzymany. Jeśli tak, włącz ponownie torrenty.
2. Sprawdź, czy Firefox jest uruchomiony. Następnie pobiera KB / s wysłane i odebrane przez siebie i zapisuje je w pliku.
3. Jeśli prędkość przesyłania lub pobierania w przeglądarce przekracza zakres odniesienia, ustawienia wysyłania / pobierania transmisji ulegają zmianie.
Dzięki temu w przypadku chęci dostępu do strony internetowej, gdy przeglądarka wysyła żądanie, wysyłanie pliku transmisyjnego jest ograniczone, a po odebraniu danych strony pobieranie jest ograniczone. Działa to świetnie, gdy uzyskujesz dostęp do wielu stron jednocześnie, a wyniki są w rzeczywistości takie same, jak przy wyłączonej transmisji.
Ogromną zaletą jest to, że jest w pełni automatyczny i nie wymaga mojej interwencji.
Scenariusz
Chociaż może być używany do kontrolowania wykorzystania przepustowości dowolnej aplikacji, w tej chwili jest napisany tylko w celu rozwiązania bardzo konkretnego problemu. Ale modyfikacje nie są trudne.
Wymagania
Do prawidłowego działania niezbędne jest posiadanie aplikacji «nethogi".
W tym przypadku, ponieważ skrypt działa z Firefoksem i Transmisją, konieczne jest zainstalowanie tych aplikacji, oprócz „transmisji zdalnej”, która zmienia wartości wysyłania i pobierania torrentów. Używam również w skrypcie „awk”. Wspominam o tym, ponieważ nie wiem, czy wszystkie dystrybucje mają to zainstalowane.
Użyte oprogramowanie
Lista aplikacji używanych przez skrypt i systemu, w którym działa.
• Debian GNU / Linux 6.0.8
• Linux 2.6.32-5-686
• Firefox 24.0
• Transmisja 2.03 (11030)
• Nethogs 0.7.0
Wykonanie
Musi być uruchamiany jako root, ponieważ nethogi można uruchomić tylko z tym użytkownikiem, ale zdalna transmisja jest wykonywany przez zwykłego użytkownika za pomocą polecenia su.
Skrypt używa wewnętrznego polecenia Bash pułapka Dzięki któremu możliwe jest przywrócenie domyślnych wartości ładowania / rozładowania transmisji, gdy jest ona zatrzymywana przez sygnały SIGINT (CTRL + c) lub SIGTERM.
Nadal nie jestem pewien, jak to zrobić, aby uruchomić go podczas uruchamiania i zatrzymać, gdy zamykam lub ponownie uruchamiam komputer. Myślałem o umieszczeniu linku w pliku /etc/rc.local ale nie wiem, czy to zadziała, i naprawdę nie rozumiem, jak działa / etc /inicj.d (Widziałem nawet kilka skryptów, które tam są szkielet, ale ich nie rozumiem). Jeśli ktoś może mi pomóc, będę bardzo wdzięczny.
Cóż, ludzie, to wszystko. Mam nadzieję, że mój mały wkład jest dla Ciebie przydatny i jeśli chcesz, możesz go ulepszyć. Chętnie przeczytam Wasze opinie i rekomendacje oraz sugestie w przypadku problemów z bezpieczeństwem pliku (nie jestem programistą, od czasu do czasu robię tylko kilka rzeczy).
Wiem, że z niektórymi poprawkami może stać się w przyszłości świetną aplikacją, ponieważ nie znam żadnego programu, który robi to samo. Na przykład wydaje mi się, że mógłbym mieć interfejs graficzny w Zenity i możliwość wyboru aplikacji, które chcemy nadać priorytet w zakresie wykorzystania przepustowości (przeglądarka internetowa, menedżer aktualizacji, transfer plików itp.) oraz różne wartości odniesienia. Tak, jest dość ambitny, ale całkiem przydatny.
Możesz pobrać skrypt w pliku makaron. Dziękuję bardzo za przeczytanie !!