Page 2 of 9 FirstFirst 1234 ... LastLast
Results 16 to 30 of 126

Thread: Возможно ли управление роутером по ICQ, Jabber и т.п.?

  1. #16
    Join Date
    May 2008
    Location
    Москва
    Posts
    477
    Quote Originally Posted by featZima View Post
    Мне кажется что это всё сильный бред =) Не стоит забывать про очень сильно ограниченные возможности роутера... Исходя из которых желательно использовать jabber + своя программа, которая будет делать необходимый мониторинг и отправлять сообщения...
    почему же бред? можно использовать тот же SNMP для снятия данных.
    не думаю что посребуется cacti или еще чтото экзотичное.
    самая большая проблема - это организовать протокол router - icq/
    эту проблему нужно решить...
    Freepriman, пиши - будем ждать результатов!
    #[WL-500W]&&[1.9.2.7-10-pre4]&&[CPU 300Mhz]&&[128Mb RAM]&&[BeeLine L2TP]&&[Danya0.ru]~
    #[Восстанавливаю/Перепаиваю до 128мб и мн.др.: Личка, ICQ:2чч2l7боо, ТЕЛ:+7(92б)2бб5Ч80..

  2. #17
    самая большая проблема - это организовать протокол router - icq/
    Именно это я и имел ввиду... Не думаю что можно найти какую либо "лёгкую" либу под это дело ^^

  3. #18
    Общение через ICQ с различными серверными программами и самими серверами - достаточно полезная штука, какие бы возможности не были у устройства, особенно когда у людей дел по горло то гораздо проще получить по аське все не обходимое за пару секунд, чем ходить в WebUI или подключаться по SSH.

    Прикладываю получившийся результат, пока что скрипт потестировал просто запустив из командной строки php .../icqcontrol/icqcontrol.php.

    В /conf/conf.php находится конфигурационная информация:

    $icq_uin, $icq_password - ICQ номер и пароль для учетной записи, под которой будет работать роутер (пароль не более 8-ми символов, иначе будет ошибка авторизации, т.к. подключение через md5).

    $icq_session_timeout - время через которое отвалится сессия, если нет активности (под активностью понимается успешный запуск некой команды).

    $icq_allowed_uins - ICQ номера с которых возможно управлять роутером, php-ый массив, определяется так: array(222222222 => true, 333333333 => true), если какой-то uin временно требуется отключить, то можно выставить false или вообще удалить.

    $icq_connection_delay - время через которое происходит попытка переподключения

    $icq_retries - кол-во попыток подключения, через которое происходит продолжительная пауза (полезно, когда происходит блокировка аккаунта)

    $icq_long_connection_delay - продолжительность длительной паузы, по-умолчанию 20 минут.

    $icq_users - информация для логина, php-ый массив, ключ-логин, значение - пароль.

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

    Все команды имеют следующий вид:

    имя_функции("аргумент1", "аргумент2", ...)

    в строках аргументов не должно быть символов ".

    Пока что реализованы функции test("Message") и exec("command"), login("login", "password"), logout(). Первая просто в тестовых целях посылает обратно переданное сообщение, вторая через shell_exec запускает команду операционной системы, про последние и так все понятно.

    Вот пример общения c роутером:

    login("login", "password")

    test("a")

    logout()

    Новые функции можно добавить просто путем добавления соответствующих статических методов в класс в файле FunctionLib.class.php.

    Вместо WebIcqPro использую WebIcqLite, т.к. после смены протокола, оригинальный WebIcqPro не работает, а то что выложено на форуме создателя в качестве исправлений не внушает доверия.

    Буду благодарен любой помощи и советам, также сообщайте о любых недоработках или ошибках, буду править в меру своих возможностей.
    Attached Files Attached Files

  4. #19
    круто,
    еще бы реализовать счетчики, например, скачивается торрент, как тока докачался, пришло сообщение в асю=)
    Asus wl-500gpv2 (rtorrent + ssh + ntorrent + rrdstorm)

  5. #20
    Может не в тему, но очень легко реализовать управление роутером по фтп.
    Скрипт раз в 5 секунд проверяет определенный файлик и выполняет его и затем удаляет. Потом редирет консоли возвращается в другой файлик.

  6. #21
    Quote Originally Posted by tiny View Post
    Может не в тему, но очень легко реализовать управление роутером по фтп.
    Скрипт раз в 5 секунд проверяет определенный файлик и выполняет его и затем удаляет. Потом редирет консоли возвращается в другой файлик.
    Так-то да, но, во первых, это не проще чем по SSH, во вторых, если "серый" IP, как у меня, то к нему никак не подключиться. Я занялся этой задачей только из-за второго, так бы - пользовался SSH.

  7. #22
    Можно вместо скрипта в ftp использовать в цикле wget с шарового хостинга . Хотя по icq конечно удобнее.

  8. #23
    как правильно запустить демона с помощью screen для php скрипта? да и вообще как отследить правильно активность скрипта?
    как передать файл от роутеровской аси?
    да и вообще есть более простой вариант парсера, а не func("arg")?

    зы. вообще считаю что тема с асей оч прикольная, еще бы довестибы совсем до ума...
    Asus wl-500gpv2 (rtorrent + ssh + ntorrent + rrdstorm)

  9. #24
    Мои эксперименты с icq не удались, поэтому я у себя установил mcabber (Jabber клиент) у него есть уже пример скрипта для обработки сообщений. Система с клиентом взаимодействует через pipe. Вобщем получилось всё просто. Пока реализовал скачивание файлов по присылаемой ссылке, выполнение команды в shell с выдачей результата.
    Пришлось вставить в крон реконнект, потому-что клиент при потере соединения реконектится сам не хочет.
    mcabber запускается через screen, весь вывод заворачивается в null.

  10. #25
    2supremacy
    А можно посмотреть, что в итоге получилось?

  11. #26
    зарегистрируйте аккаунт на jabber.ru для своего роутера.
    после установки mcabber редактируем файл /opt/etc/.mcabber/mcabberrc
    PHP Code:
    set username routeraccount@jabber.ru
    set password 
    = ********
    set server jabber.ru
    set port 
    5222

    set events_command 
    = /opt/etc/.mcabber/eventcmd
    set event_log_files 
    1
    set event_log_dir 
    = /opt/etc/.mcabber/event_files

    set fifo_name 
    = /opt/etc/.mcabber/mcabber.fifo
    set fifo_hide_commands 
    0
    set fifo_ignore 
    0

    set autoaway 

    далее редактируем /opt/etc/.mcabber/eventcmd
    PHP Code:
    #!/bin/sh
    event=$1
    arg1
    =$2
    arg2
    =$3
    filename
    =$4
    # Note that the 4th argument is only provided for incoming messages
    # and when 'event_log_files' is set.
    if [ $event "MSG" ]; then
      
    case "$arg1in
        IN
    )
            if [ 
    $arg2 "masteraccount@jabber.ru" ]
            
    then
                    
    var=`/bin/cat $filename`
                    
    cmd=`echo "$var" | cut -c1-4`;
                    
    cmdarg=`echo "$var" | cut -c6-`;

                    echo 
    "cmd($cmd) cmdarg($cmdarg)" >> /opt/etc/.mcabber/log
                    
    if [ $cmd "exec" ]; then
                          $cmdarg 
    > /opt/etc/.mcabber/result && (echo "/say_to -n -f /opt/etc/.mcabber/result $arg2> /opt/etc/.mcabber/mcabber.fifo) &
                    
    elif $cmd "!get" ]; then
                          cd 
    /opt/etc/.mcabber
                          
    /opt/bin/curl -O $cmdarg && (echo "/say_to $arg2 Complete $cmdarg>  /opt/etc/.mcabber/mcabber.fifo) &
                    
    fi
                    
    echo "/say_to $arg2 Ok" > /opt/etc/.mcabber/mcabber.fifo
            
    else
                    echo 
    "/say_to $arg2 Ne ponyatno" >  /opt/etc/.mcabber/mcabber.fifo
            fi
            
    /bin/rm $filename
          
    ;;
        
    MUC)
          
    # Groupchat message in room $arg2
          
    if [ -"$filename&& -"$filename]; then
            
    # We could process filename here...
            
    /bin/rm $filename
          fi
          
    ;;
        
    OUT)
          
    # Outgoing message for buddy $arg2
          
    ;;
      
    esac
    fi 
    создаём исполняемый файл /opt/bin/mcabber-run
    PHP Code:
    #!/bin/sh
    export LANG="ru_RU.UTF-8"
    /opt/bin/mcabber -/opt/etc/.mcabber/mcabberrc >/dev/null 2>&
    у меня mcabber запускается файлом /opt/etc/init.d/S97mcabber

    PHP Code:
    #!/bin/sh
    #
    # Startup script for mcabber
    #
    # Stop myself if running
    PIDFILE=/opt/var/run/mcabber.pid
    case $1 in
    start
    )
    [ -
    /opt/etc/.mcabber/mcabber.fifo ] && rm /opt/etc/.mcabber/mcabber.fifo
    /opt/bin/screen -dmS mcabbers /opt/bin/mcabber-run
    sleep 2s
    rm 
    ${PIDFILE}
    pidof mcabber > ${PIDFILE};
    ;;
    stop)
    [ -
    ${PIDFILE} ] && kill `cat ${PIDFILE}` ;;
    *)
    echo 
    "usage: $0 (start|stop)"
    exit 1
    esac 
    Для начала нужно просто запустить mcabber и убедится что всё работает
    PHP Code:
    /opt/bin/mcabber -/opt/etc/.mcabber/mcabberrc 
    возможно авторизовать ваш masteraccount с которого вы будете управлять роутером, убедится что сообщения приходят и отправляются.

    потом запускать выполнив
    PHP Code:
    /opt/etc/init.d/S97mcabber start 
    (если у вас эти скрипты не выполняются автоматически при загрузке)


    на всякий случай вставил в cron.hourly скрипт mcabber-online
    PHP Code:
    #!/bin/sh
    if [ -/opt/etc/.mcabber/mcabber.fifo ]
    then
    echo "/connect /status away" > /opt/etc/.mcabber/mcabber.fifo
    fi 
    Скрипт обработки сообщений выложил в урезанном виде, т.к. у меня там много специфических функций, типа выдача истории падения канала, поэтому не исключены ошибки. Лучше скачать архив с исходниками mcabber там несколько примеров скриптов.
    Ну и в линуксе я не сильно разбираюсь, поэтому некоторые решения могут кому-то показаться кривоватыми.
    Last edited by supremacy; 30-07-2009 at 07:01. Reason: исправление ошибок

  12. #27
    Join Date
    Mar 2008
    Location
    Плесецк
    Posts
    18

    А как этим пользоваться

    Все установил, связи есть, как команды посылать, в каком виде их набирать?
    и еще, после запуска попадаещ видимо в общий чат, и в каталоге event_files копятся файлы, что с ними делать?

  13. #28
    Quote Originally Posted by Matashin View Post
    Все установил, связи есть, как команды посылать, в каком виде их набирать?
    и еще, после запуска попадаещ видимо в общий чат, и в каталоге event_files копятся файлы, что с ними делать?
    в jabber есть понятие закладок. По умолчанию этот чат добавлен в закладки вашего аккаунта. Я удалил его из закладок используя клиент windows, вы может попробовать сделать это командой /room bookmark [add|del] [-autojoin|+autojoin]
    Файлы копятся видимо потому что я выложил урезанный скрипт. В полном скрипте в конце обработки сообщений всегда вызывалась команда удаления файла события.
    PHP Code:
    /bin/rm $filename 
    по командам читайте MCABBER(1) Manual Page

    как отправить сообщение из командной строки я вроде показал:
    отправить текст:
    PHP Code:
    echo "/say_to account@jabber.ru Ok" > /opt/etc/.mcabber/mcabber.fifo 
    отправить содержимое тектового файла result:
    PHP Code:
    echo "/say_to -n -f /opt/etc/.mcabber/result account@jabber.ru" > /opt/etc/.mcabber/mcabber.fifo 

    Пример скрипта eventcmd идущего с исходниками:
    PHP Code:
    #! /bin/sh
    #
    # Sample events script for mcabber
    # Plays a sound when receiving a message
    #
    # To use this script, set the "events_command" option to the path of
    # the script (see the mcabberrc.example file for an example)
    #
    # MiKael, 2005-07-15

    # The following sound comes with the gtkboard package,
    # you can modify this line to play another one...
    CMD_MSG_IN="/usr/bin/play /usr/share/sounds/gtkboard/machine_move.ogg"

    event=$1
    arg1
    =$2
    arg2
    =$3
    filename
    =$4
    # Note that the 4th argument is only provided for incoming messages
    # and when 'event_log_files' is set.

    if [ $event "MSG" ]; then
      
    case "$arg1in
        IN
    )
          
    # Incoming message from buddy $arg2
          
    $CMD_MSG_IN > /dev/null 2>&1
          
    if [ -"$filename--"$filename]; then
            
    # We could process filename here...
            
    /bin/rm $filename
          fi
          
    ;;
        
    MUC)
          
    # Groupchat message in room $arg2
          
    if [ -"$filename&& -"$filename]; then
            
    # We could process filename here...
            
    /bin/rm $filename
          fi
          
    ;;
        
    OUT)
          
    # Outgoing message for buddy $arg2
          
    ;;
      
    esac
    elif 
    $event "STATUS" ]; then
      
    # Buddy $arg2 status is $arg1 (_, O, I, F, D, N, A)
      
    echo > /dev/null
    elif 
    $event "UNREAD" ]; then
      
    # $arg1 is the number of unread buffers
      
    echo > /dev/null
    fi 
    Я не стал расписывать то что делает скрипт, но кое-какие пояснения видимо требуются.
    if [ $arg2 = "masteraccount@jabber.ru" ] только с этого аккаунта будут приниматься команды

    если отправить с masteraccount@jabber.ru роутеру сообщение exec ps то он ответит Ok, а затем пришлёт список запущенных процессов.
    если отправить !get http://www.lilotux.net/~mikael/mcabb.../mcabber.1.txt он ответит Ok, а как только скачает файл пришлёт Complete http://www.lilotux.net/~mikael/mcabb.../mcabber.1.txt


    Если у кого-то возник вопрос а зачем весь этот огород городить? Отвечу просто у моего провайдера даже за деньги нельзя получить белый IP, а таким образом я получаю возможность посылать команды роутеру хоть с мобильного телефона, хоть в браузере из почтового ящика gmail.com
    Last edited by supremacy; 03-02-2009 at 06:45.

  14. #29
    2supremacy
    спасибо.
    уже сделал примерно также, но у вас в некоторых местах красивее получилось
    единственное:
    $cmdarg > /opt/etc/.mcabber/result ... в result пишет только stdout. Я сделал
    $cmdarg > /opt/etc/.mcabber/result 2>&1 ... чтоб приходили и сообщения об ошибках.

  15. #30
    Quote Originally Posted by zavant View Post
    $cmdarg > /opt/etc/.mcabber/result 2>&1 ... чтоб приходили и сообщения об ошибках.
    Спасибо за подсказку, я об этом почему-то не подумал.

Page 2 of 9 FirstFirst 1234 ... LastLast

Similar Threads

  1. Управление UPS при помощи apcupsd и nut
    By Contemplator in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 210
    Last Post: 14-01-2015, 13:11
  2. Программа для управления роутером
    By Vitaly_k in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 113
    Last Post: 08-12-2014, 05:34
  3. Управление светодиодами на роутере
    By lly in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 112
    Last Post: 03-01-2014, 15:04
  4. Как подружить 2 принтера с роутером Asus?
    By ryzh in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 206
    Last Post: 23-12-2011, 10:05
  5. Программный доступ (обратная связь с роутером)
    By Mak in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 25
    Last Post: 22-11-2010, 21:11

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
  •