Page 1 of 4 123 ... LastLast
Results 1 to 15 of 55

Thread: Альтернативные web-интерфейсы Transmission

  1. #1

    Transmission и графики раздачи/загрузки(+ вопрос по интерфейсу)

    После миграции с transmission версии 1.20 на версию 1.33, я понял, что мне не хватает графиков загрузки проца+отдача+загрузка. Попробовал rrdtool, не понравилось, что он каждые пять минут нагружает проц на 90%. В связи с этим написал скриптик для сбора данных от transmission, и прикрутил его к gnuplot, который использовался в версии 1.20.
    Логика работы:
    1. По cron`у, раз в пять минут запускается скрипт.
    2. В скипте у трансмиссии запрашивается данные по торрентам(transmission-remote -l). В файл transfer.log кладутся данные для обычного просмотра(можно удалять), в файл transfer.data - для рисования. Здесь используется awk.
    3. Раз в час cron запускает gnuplot для создания графика. Лучше это сделать при вызове из интерфейса, но я пока не разобрался в веб-интерфейсе transmission 1.33.
    4. Раз в день cron запускает logrotate, который текущие файлы с данными сжимает, а старые удаляет. Делается для того, чтобы не было переполнения диска.


    Внимание:
    • Работает только с целыми часовыми поясами. Если нужно что-то другое то меняйте руками параметр timezone.
    • В том виде, как здесь приведено, создается файл для создания графика и для обычного просмотра. Второй можно не создавать, тогда нужно удалить секцию из скрипта и конфигурационного файла logrotat`а.


    Считаю, что человек, который будет делать то, что написано далее, умеет редактировать скрипты (например, при помощи vi), имеет установленный и настроеный transmission, соот-но есть /opt.
    Инструкция по установке:
    1. Необходимые пакеты, ест-но, кроме transmission; в скобках указываю версию, на которой у меня работает:
      1. awk - утилита для обработки текста(gawk - 3.1.6-1);
      2. cron - программа для запуска чего-либо по расписанию (cron - 4.1-7);
      3. gnuplot - программа для создания рисунков из текстовых файлов с данными(gnuplot - 4.2.2-2).
      4. logrotate - утилита для ротации логов (logrotate - 3.7.1-4).

      Наличие установленого пакета проверять командой ipkg list_installed | grep 'cron':
      Code:
      [admin@dtr_rout nbdmsan]$ ipkg list_installed | grep 'cron'
      cron - 4.1-7 - Standard vixie cron, with cron.d addition
      Установку пакетов осуществлять в штатном порядке, утилитой ipkg.
    2. Проверяем наличие всех необходимых каталогов
      Code:
      [admin@dtr_rout nbdmsan]$ ls /opt/etc/transmlog/
      transfer.gnuplot  transfer.png
      [admin@dtr_rout nbdmsan]$ ls /opt/etc/cron.5mins/
      tr_load.sh
      [admin@dtr_rout nbdmsan]$ ls /opt/var/log/
      messages    messages.1.gz  messages.3.gz  messages.5.gz  messages.7.gz  messages.9.gz  transfer.data       transfer.log
      messages.0  messages.2.gz  messages.4.gz  messages.6.gz  messages.8.gz  transfer.data.1.gz  transfer.log.1gz
      [admin@dtr_rout nbdmsan]$ ls /opt/etc/logrotate.d
      transmlog.conf
      Если какого-то каталога нет, то создаем его при помощи команды mkdir:
      Code:
      mkdir /opt/etc/transmlog/
    3. B каталоге /opt/etc/cron.5mins/ создаем скрипт следующего содержания:
      Code:
      #!/bin/sh
      
      plotdata="/opt/var/log/transfer.data"
      textdata="/opt/var/log/transfer.log"
      timezone=`/bin/date +%z | /opt/bin/awk '{print int($1)/100}'`
      
      #data for text
      load=`cat /proc/loadavg | /opt/bin/awk '{print $1}'`
      time=`/bin/date '+%Y.%m.%d %T'`
      upload=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($4,".")) {total+=int($4)} else {total+=int($5)}}; END { print total }'`
      download=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($4,".")) {total+=int($5)} else {total+=int($6)}}; END { print total }'`
      /bin/echo $time "       " "LOAD" "      " $load "       " "UP" "         " $upload "     "  "DOWN" "     " $download >> $textdata
      
      #data for gnuplot
      #       load=`cat /proc/loadavg | /opt/bin/awk '{print $1}'`
      time=`/bin/date '+%s'`
      let "time = $time + ( 3600 * $timezone )"
      #       upload=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($4,".")) {total+=int($4)} else {total+=int($5)}}; END { print total }'`
      #       download=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($4,".")) {total+=int($5)} else {total+=int($6)}}; END { print total }'`
      let "download = 0 - $download"
      /bin/echo $time $download $upload $load >> $plotdata
      Если не разбираетесь в скриптах, то набивать руками не советую (копируйте) - очень важно соответствие следующих символов '"`{. Я очень долго их подбирал :-).
      В строке
      Code:
      /bin/echo $time "       " "LOAD" "      " $load "       " "UP" "         " $upload "     "  "DOWN" "     " $download >> $textdata
      то, что между "" должно быть табуляцией, при копировании вставляется как пробелы.
      Если Вам не нужны данные в тектовом виде, то можно удалить секцию ##data for text, но тогда нужно раскоментировать строки, начинающиеся с "# ".
      UPD. В версии Transmission 1.50 немного поменяли вывод transmission-remote -l, соответственно в скрипте должно быть:
      Code:
      upload=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($5,".")) {total+=int($5)} else {total+=int($6)}}; END { print total }'`
      download=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($4,".")) {total+=int($6)} else {total+=int($7)}}; END { print total }'`
    4. Ставим скрипту атрибуты на выполнение
      Code:
      chmod +x /opt/etc/cron.5mins/tr_load.sh
    5. Создаем файл настроек для gnuplot - /opt/etc/transmlog/transfer.gnuplot со следующим содержанием:
      Code:
      set terminal png small size 800,320
      set output '/opt/etc/transmlog/transfer.png'
      set xdata time
      set timefmt "%s"
      set format x "%H:%M\n%m/%d"
      set ytics nomirror
      set y2tics nomirror
      set y2range [0:]
      set ylabel "Transmission transfer rate [kB/s]"
      set y2label "System load"
      set y2tics 1
      set xlabel "Time"
      plot '/opt/var/log/transfer.data' using ($1):2 title 'download' axis x1y1 with impulses,      '/opt/var/log/transfer.data' using ($1):3 title 'upload' with impulses,      '/opt/var/log/transfer.data' using ($1):4 axis x1y2 title 'load' with lines
      quit
      /opt/etc/transmlog/transfer.png - куда генерировать график. /opt/var/log/transfer.data - откуда брать данные.
    6. Основной файл конфигурации /opt/etc/logrotate.conf у меня выглядит так:
      Code:
      compress
      
      /opt/var/log/messages {
              size 1024k
              weekly
              rotate 9
              postrotate
              killall -HUP syslogd
              endscript
      }
      
      include /opt/etc/logrotate.d
      Его цель - ротация основного лога. Основной лог у меня слинкован на /opt/var/log/messages при помощи команды
      Code:
      ln -s /tmp/syslog.log /opt/var/log/messages
      Создаем файл /opt/etc/logrotate.d/transmlog.conf с содержимым:
      Code:
      /opt/var/log/transfer.data {
              compress
              size 1024k
              daily
              rotate 9
      }
      /opt/var/log/transfer.log {
              compress
              size 1024k
              daily
              rotate 9
      }
    7. Добавляем в /opt/etc/crontab строки
      Code:
      */5 * * * * admin /opt/etc/cron.5mins/tr_load.sh
      1 * * * * admin /opt/bin/gnuplot /opt/etc/transmlog/transfer.gnuplot
      0 0 * * * admin /opt/sbin/logrotate -f /opt/etc/logrotate.conf &>/dev/null
    8. Проверяем что работает
      Code:
      [admin@dtr_rout root]$ /opt/etc/cron.5mins/tr_load.sh
      [admin@dtr_rout root]$ ls /opt/var/log/transfer.*
      /opt/var/log/transfer.data /opt/var/log/transfer.log
      [admin@dtr_rout root]$ date
      Mon Sep 22 15:23:06 UCT 2008
      [admin@dtr_rout root]$ tail /opt/var/log/transfer.log
      2008.09.22 14:45:02      LOAD    0.26    UP       94      DOWN    0
      2008.09.22 14:50:02      LOAD    0.08    UP       70      DOWN    0
      2008.09.22 14:55:02      LOAD    0.04    UP       72      DOWN    0
      2008.09.22 15:00:01      LOAD    0.00    UP       66      DOWN    0
      2008.09.22 15:05:02      LOAD    0.15    UP       42      DOWN    0
      2008.09.22 15:10:02      LOAD    0.03    UP       54      DOWN    0
      2008.09.22 15:15:01      LOAD    0.02    UP       40      DOWN    0
      2008.09.22 15:20:01      LOAD    0.07    UP       80      DOWN    0
      2008.09.22 15:20:37      LOAD    0.19    UP       100     DOWN    0
      2008.09.22 15:23:02      LOAD    0.01    UP       60      DOWN    0
      [admin@dtr_rout root]$ /opt/bin/gnuplot /opt/etc/transmlog/transfer.gnuplot
      [admin@dtr_rout root]$ ls -la /opt/etc/transmlog/
      total 20
      drwxr-xr-x  2 admin root 4096 2008-09-22 14:17 .
      drwxr-xr-x 12 admin root 4096 2008-09-22 08:18 ..
      -rwxr--r--  1 admin root  554 2008-09-22 14:20 transfer.gnuplot
      -rw-r--r--  1 admin root 5711 2008-09-22 15:25 transfer.png


    После этого можно смотреть график в /opt/etc/transmlog/transfer.png.


    Осталось внедрить эту картинку в web-морду transmission и буду я доволен.
    Может кто-нибудь помочь с JSON и внедрением картинки?

    UPD. после обновления до transmission - 1.41b4-1 работает.
    Last edited by Cd_spb; 14-03-2010 at 15:21. Reason: Убрал лишнюю "е" в chmod

  2. #2
    Нашел способ, как воткнуть график в веб интерфейс.
    1. Cоздаем софтлинк для графика:
      Code:
      ln -s /opt/etc/transmlog/transfer.png /opt/share/transmission/web/images/transfer.png
    2. Кладем иконку, для кнопку вызова в /opt/share/transmission/web/images/buttons/
      Code:
      wget -O/opt/share/transmission/web/images/buttons/load.png 'http://wl500g.info/attachment.php?attachmentid=3580&stc=1&d=1222098267'
    3. Редактируем /opt/share/transmission/web/index.html
      Для Transmission 1.33
      Code:
      <ul class="torrent_inspector_tabs">
      	<li><a href="#info" id="inspector_tab_info" class="inspector_tab selected"><img src="images/buttons/info_general.png" alt="Information"/></a></li>
      	<li><a href="#activity" id="inspector_tab_activity" class="inspector_tab"><img src="images/buttons/info_activity.png" alt="Activity"/></a></li>
      	<li><a href="images/transfer.png" title="Load"><img src="images/buttons/load.png" alt="Load"/></a></li>
      </ul>
      Для Transmission 1.41 и 1.5
      Code:
      <div id="inspector_tabs">
      	<div class="inspector_tab selected" id="inspector_tab_info"><a href="#info"><img src="images/buttons/info_general.png" alt="Information"/></a></div>
      	<div class="inspector_tab" id="inspector_tab_activity"><a href="#activity"><img src="images/buttons/info_activity.png" alt="Activity"/></a></div>
      	<div class="inspector_tab" id="inspector_tab_activity"><a href="images/transfer.png"><img src="images/buttons/load.png" alt="Load"/></a></div>
      </div>

    Можно сделать более "честный способ", но это не ко мне.
    Теперь кнопка располагается в меню "инспектор". При нажатии на кнопку открывается график, который ежечастно создается скриптом. Остался вопрос - как сделать, чтобы график обновлялся при вызове.
    Attached Images Attached Images  
    Last edited by Cd_spb; 28-02-2009 at 12:36. Reason: Для версии 1.5

  3. #3
    Quote Originally Posted by Cd_spb View Post
    Проверяем что работает
    [
    У меня после запуска tr_load.sh выдает такое:
    Code:
    transmission-remote: Unable to parse response "Error: 401"
    transmission-remote: Unable to parse response "Error: 401"
    /opt/etc/cron.5mins/tr_load.sh: /opt/etc/cron.5mins/tr_load.sh: 17: /opt/bin/sed: not found
    /opt/etc/cron.5mins/tr_load.sh: let: 18: Syntax error: time = 1222202600 + ( 3600 *  )
    /opt/etc/cron.5mins/tr_load.sh: let: 21: Syntax error: download = 0 -
    Чего с этим можно сделать?

  4. #4
    Quote Originally Posted by Uncle Sharic View Post
    У меня после запуска tr_load.sh выдает такое:
    Code:
    transmission-remote: Unable to parse response "Error: 401"
    transmission-remote: Unable to parse response "Error: 401"
    /opt/etc/cron.5mins/tr_load.sh: /opt/etc/cron.5mins/tr_load.sh: 17: /opt/bin/sed: not found
    /opt/etc/cron.5mins/tr_load.sh: let: 18: Syntax error: time = 1222202600 + ( 3600 *  )
    /opt/etc/cron.5mins/tr_load.sh: let: 21: Syntax error: download = 0 -
    Чего с этим можно сделать?
    1. Проверить вывод команды
    Code:
    transmission-remote -l
    должен быть список торрентов с первой строкой
    Code:
    ID   Done  ETA       Up     Down   Ratio  Status       Name
    вывод приведите здесь.
    2. Удалить строку из скрипта строку
    Code:
    timezone=`/bin/date +%z | /opt/bin/sed 's/0//g'`
    Забыл убрать. timezone читается раньше.

    Две последние ошибки "рассасутся" сами.

  5. #5
    Пробывал все вышесказанное на версии 1.34, результат - кнопка появилась не справа, а в центре, кнопка настроек слева внизу исчезла вообще. Плюс ошибка
    PHP Code:
    transmission-remoteUnable to parse response "Error: 401" 
    . Эта же ошибка выходит на команду
    PHP Code:
    transmission-remote -
    Все что смог настроить здесь http://styxnout.homeip.net/ WL-500W+Tvix 6500 1Тб+ Qnap TS-109 II Pro 1Тб

  6. #6
    Я не гарантировал, что на версии, отличной от 1.33 это быдет работать.
    Quote Originally Posted by sda View Post
    Пробывал все вышесказанное на версии 1.34, результат - кнопка появилась не справа, а в центре, кнопка настроек слева внизу исчезла вообще.
    Какой вариант 1.34 Вы ставили? Как я понимаю там две различные веб-морды.
    Если куда-нибудь выложите содержимое каталога /opt/share/transmission, то посмотрю что можно сделать. Но лучше если Вы сами поковыряете index.html и напишете результат.
    Quote Originally Posted by sda View Post
    Плюс ошибка
    PHP Code:
    transmission-remoteUnable to parse response "Error: 401" 
    . Эта же ошибка выходит на команду
    PHP Code:
    transmission-remote -
    Нужно читать что пишут по
    Code:
    transmission-remote --help

  7. #7
    Quote Originally Posted by Cd_spb View Post
    1. Проверить вывод команды
    Code:
    transmission-remote -l
    должен быть список торрентов с первой строкой
    Code:
    transmission-remote: Unable to parse response "Error: 401"
    Проблема, возможно, в версии 1.34. ipkg говорит:

    Code:
    transmission - 1.34-1 - Lightweight BitTorrent client and daemon, with Clutch web interface bundled.
    Но что интересно, согласно transmission-remote --help команда -l должна выдавать список торрентов и в этой версии transmission.
    Last edited by Uncle Sharic; 24-09-2008 at 09:36.

  8. #8
    Quote Originally Posted by Uncle Sharic View Post
    Проблема, возможно, в версии 1.34. ipkg говорит:

    Code:
    transmission - 1.34-1 - Lightweight BitTorrent client and daemon, with Clutch web interface bundled.
    Но что интересно, согласно transmission-remote --help команда -l должна выдавать список торрентов и в этой версии transmission.
    "Тады ой".
    Попробуйте откатиться на версию 1.33 Она еще есть в репозитории.

  9. Протестировал. Все работает похоже, но не правильно.
    Ошибка возникает в третьем столбце ETA.
    Когда там значение из двух слов, у авк рвет крышу. Со всеми вытекающими для статистики.

    Пример:

    /opt/bin/transmission-remote -l

    ID Done ETA Up Down Ratio Status Name
    1 100% Done
    2 100% Done
    3 81% 13 min
    4 100% Done
    5 100% Done
    6 100% Done
    7 100% Done
    8 100% Done
    9 100% Done
    10 100% Done
    11 100% Done
    12 2% 27 days

    /opt/bin/transmission-remote -l | /opt/bin/awk '{print $3};'
    ETA
    Done
    Done
    15
    Done
    Done
    Done
    Done
    Done
    Done
    Done
    Done
    27

    /opt/bin/transmission-remote -l | /opt/bin/awk '{print $4};'
    Up
    0.0
    0.0
    min
    2.0
    0.0
    0.0
    0.0
    0.0
    0.0
    0.0
    1.5
    days

    и так далее...

  10. #10
    Quote Originally Posted by rootpuppet View Post
    Протестировал. Все работает похоже, но не правильно.
    Ошибка возникает в третьем столбце ETA.
    Когда там значение из двух слов, у авк рвет крышу. Со всеми вытекающими для статистики.

    Пример:

    /opt/bin/transmission-remote -l

    ID Done ETA Up Down Ratio Status Name
    1 100% Done
    2 100% Done
    3 81% 13 min
    Спасибо, ошибка абсолютно логична. :-(
    У меня это первый скрипт, и 1.33 я только поставил и ничего не скачивал с ним. Буду думать.
    Last edited by Cd_spb; 24-09-2008 at 16:08.

  11. По этому поводу есть четыре идеи:
    1. проверять второй столбец на цифру 100 и от этого зависит как обрабатывать треттий
    2. сменить разделитель после третьего столбца с пробела на точку, а потом обратно на пробел
    3. в столбце ЕТА каким-то образом удалить пробел или исключить слова {hrs, min, days, weeks} используя например sed
    4. Удалить столбец ETA по шаблону "все что между % и числом с точкой"

    К сожалению конкретнее помочь не могу, т.к. не программист, а архитектор.
    Last edited by rootpuppet; 24-09-2008 at 13:32.

  12. #12
    rootpuppet
    Попробуйте заменить строчки на такие
    Code:
    upload=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($4,".")) {total+=int($4)} else {total+=int($5)}}; END { print total }'`
    download=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($5,".")) {total+=int($5)} else {total+=int($6)}}; END { print total }'`
    Отпишитесь, пожалуйста, о результатах.

  13. download не работает снова потому что в случае с нормальным ета $5 это даунлоад столбец, а в случае с ета в два слова - это аплоад столбец (он ведь тоже с точкой). То есть там ВСЕГДА будет 0 или то что сидируется одновременно при даунлоаде.

    Есть еще идея - грепать слово Downloading и из полученных строчек складывать 6-й столбец. Вроде так проще всего.
    Last edited by rootpuppet; 24-09-2008 at 15:47.

  14. #14
    Проще, во втором случае, тоже проверяем 4-й столбец.(голова болит - ничего не соображаю)
    Code:
    upload=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($4,".")) {total+=int($4)} else {total+=int($5)}}; END { print total }'`
    download=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($4,".")) {total+=int($5)} else {total+=int($6)}}; END { print total }'`

  15. Quote Originally Posted by Cd_spb View Post
    Проще, во втором случае, тоже проверяем 4-й столбец.
    И почему я сам до этого не догадался? Работает!

    Да можно исправлять пред. посты. Молодец!
    Last edited by rootpuppet; 24-09-2008 at 16:08.

Page 1 of 4 123 ... LastLast

Similar Threads

  1. Альтернативные прошивки для wl700gE
    By Oleg in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 165
    Last Post: 05-03-2011, 08:15
  2. Error 501 when connecting to Transmission Remote
    By buddy in forum WL-500gP Q&A
    Replies: 43
    Last Post: 30-06-2009, 01:06
  3. 5 dzien walki z olegiem i transmission
    By rainercray in forum Polish Discussion - Polski (PL)
    Replies: 0
    Last Post: 07-02-2009, 16:49
  4. wi-fi и интерфеисы
    By valo in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 4
    Last Post: 26-10-2008, 22:51

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •