Clq 17.03.2011 17:16

СкриптыАвтоматическое управление скоростью Transmission

Автоматическая установка и снятие ограничения скорости для Transmission в зависимости от наличия/отсутствия активности пользователя.
Торренты часто забивают весь канал, и пользоваться браузером при этом невозможно. Решение: установить для торрент-клиента ограничитель скорости в 60-70% от ширины канала. Но, когда я отхожу от компа на более-менее длительное время, хочется, чтобы торренты шпарили на полную. Для того, чтобы не переключать этот «черепаший» режим каждый раз вручную, и был написан этот скрипт. Основной компонент: xprintidle — просто выводит время бездействия юзера за компьютере.

Зависимости: xprintidle, libnotify-bin, transmission-cli

Предварительно также нужно в графическом клиенте настроить параметры ограничения скорости и включить веб-интерфейс.

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash

IDLEMAX=120000 #время бездействия, после которого снимается ограничение (мс)
TIMEOUT=4
HOST=localhost
PORT=9099

IDLENOW=-1
while true; do
IDLENOW=$(xprintidle)
if << $IDLENOW -gt $IDLEMAX >>
then if << $TURTLE == true >>
then
TURTLE=false
echo -e "\nTurtle mode OFF"
transmission-remote $HOST:$PORT -AS
notify-send "Transmission" "Ограничение скорости снято" -i transmission &
fi
elif << $TURTLE != true >>
then
TURTLE=true
echo -e "\nTurtle mode ON"
transmission-remote $HOST:$PORT -as
notify-send "Transmission" "Установлено ограничение скорости" -i transmission &
fi
sleep $TIMEOUT
done



Разумеется, скрипт легко переделывается под любой другой торрент-клиент, позволяющий управление из командной строки, или вообще любую задачу, когда необходимо переключать какие-либо режимы в зависимости от того, работает ли кто-то за компьютером.


Тэги: bash transmission скрипты
+ 13 -
Похожие Поделиться

mhspace 17.03.2011 17:19 #
Ограничение скорости неэффективно. Лучше просто поставить меньше потоков на загрузку. При этом, если будут щедрые сиды, вы будете качать на весь канал и при этом комфортно серфить.
Clq 17.03.2011 17:22 #
У меня узкий канал (есть еще такие, да). Сколько потоков не выставляй, если торрент качает на полную, серфить в инете невозможно.
mhspace 17.03.2011 17:38 #
Узкий это сколько? У меня в четверть мегабита такая схема работала отлично.
Clq 17.03.2011 17:59 #
Столько же :)
mhspace 17.03.2011 18:22 #
Ну сейчас у меня уже больше, но суть в том, что траффик делится поровну между всеми TCP-соединениями. И если у вас торрент качает в 10 соединений, то HTTP остаётся примерно 1/11 всего траффика. Но это грубо, ибо браузер одновреммено тоже много чего загружает. Поэтому поставив до 5-ти потоков (можно начать пробовать с одного) можно достичь нормальной скорости серфинга и при четверти мегабита. Но при одном потоке не факт, что на него попадётся щедрый сидер, поэтому желательно увеличивать количество потоков при неиспользовании браузера. Может стоит написать скрипт, который манипулирует не ограничением скорости, а ограничением потоков?
Clq 17.03.2011 18:37 #
Да, можно попробовать и так. transmission-remote -pr 4 вместо transmission-remote -as
predator 17.03.2011 17:26 #
Интересно.. насколько больше/меньше ресурсов требуют такие скрипты с использованием sleep по сравнению с запуском по cron'у?
Clq 17.03.2011 17:36 #
Я тоже об этом думал. Но как-то странно указывать крону запускать команду каждые четыре секунды... Я с этим скриптом никаких дополнительных тормозов не чувствую.
homolibere 17.03.2011 17:56 #
штука прикольная, однако у меня стоит "сервер" (отдельный хедлес комп) на котором и стоит трансмишен. xprintidle - всегда там будет выдавать положительный результат))) А в нет я хожу с "клиента".

конечно можно заморочиться и докрутить подключение по ссх, но стоит ли оно того? в основном у меня с 30 Мбит/с таких проблем нет, однако отдавая дань прошлым временам (когда было 2 кб/с) забукмаркаю!

спасибо, полезно.
_DM_ 17.03.2011 18:00 #
Всё руки не доходили заняться аналогичным скриптом. Спасибо!
Clq 17.03.2011 18:01 #
Ну да, буква x в названии как бы намекает, что на сервере оно бесполезно :)

Таким счастливчикам, конечно, не стоит :)
Clq 17.03.2011 18:02 #
Промазал, это ответ сюда: http://welinux.ru/post/5293/#cmnt100600
uscr 17.03.2011 18:04 #
xprintidle

Вот что мне нужно! Но почему никто о нём не знал?!
Спасибо, о автор топика!
Clq 17.03.2011 18:25 #
Пожалуйста :) Нашлось простым поиском по синаптику :)
_DM_ 17.03.2011 18:13 #
Стоит только добавить что:
PORT=9099
Это порт, указанный в Edit > Preferences > Web > Listening port
По стандарту указан 9091 по-моему.
Clq 17.03.2011 18:24 #
А, да, забыл про это указать. На стандартном порту у меня веб-интерфейс почему-то работать не захотел.
Murz 22.03.2011 22:50 #
А можно как-нибудь в консоли узнать время простоя компа? Ну сколько времени не тыкали клаву и не дёргали мышку?
А то у меня несколько юзеров у компа часто бывают одновременно залогинены, а торрент (deluge) запущен как демон, хотелось бы бекграундный процесс один запустить который сразу за всеми будет следить, а не для каждого юзера отдельный (потому что предчувствую что пока один будет видеть что юзер работает, другой от неактивной сессии будет рапортовать что комп бездействует и кто в этой борьбе победит - неизвестно ;)