Ad Widget

Collapse

Отправляем уведомления в скайп

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ivan_o
    Junior Member
    • Jan 2013
    • 3

    #1

    Отправляем уведомления в скайп

    Возникла у меня необходимость прикрутить оповещения по скайпу, причем чтобы отправлялось не конкретному человеку, а в конференцию (всему нашему отделу ИТ).
    Немного фактов:
    1.Скайп не имеет консольных клиентов, только с GUI.
    2.Есть skypekit, управляемый по api, который хоть и стоит смешных $5, но все же денег. Кроме того, опыта работы с ним нет. Хотя, с помощью него можно отправлять сообщения из консоли.
    3.Еще есть sevabot для скайпа, который вроде как умеет интегрироваться в заббикс. Не знаю, не пробовал.
    В любом случае, городить дополнительные пакеты на заббикс сервере не хотелось.

    Итак, погуглив по форуму, наткнулся на этот топик: https://www.zabbix.com/forum/showthread.php?p=78264
    Поднимать иксы на заббикс сервере ой как не хотелось, решил собрать все то же самое на отдельной виртуальной машине, а скриптом с заббикса пушить сообщения на этот сервер.
    Выполняем все инструкции из топика выше. Там все доступно написано, добиваемся, чтобы скрипт sendim.sh работал. Прекрасно, но нам нужно отправить в конференцию. Для этого прежде всего создадим
    конференцию, и в ней любым пользовотелем прямо в окне чата надо набрать "/get name". Получим название конференции вида: "#username1/$username2;c1b638c921d097b8". Зайдем по vnc на скайп сервер и проверим, что наш пользователь
    скайп бота в конференции.
    А теперь снесем все из скрипта sendim.py и напишем следущее:

    Code:
    import Skype4Py as sky
    import sys
    client = sky.Skype()
    client.Attach() 
    name = sys.argv[1]
    curchat = ''
    try:
        curchat = client.Chat(name)
    except Exception, e:
        print 'Can not send message!'
    else:
        print 'Send message to:', curchat.Name
        msg = ' '.join(sys.argv[2:])
        curchat.SendMessage(msg.decode('utf-8'))
    Теперь надо сгенерировать пару ключей на заббикс сервере и публичный ключ прописать на сервере со скайпом. На заббикс сервере обязательно в /etc/passwd должна быть прописана пользователю zabbix
    home директория и в ней создана директория .ssh, куда положить приватный ключ. Командная оболочка в passwd файле может быть /bin/false. Теперь в директории скриптов, указанной в конфиге заббикса создадим малюсенький .sh скрипт:
    Code:
    #/bin/bash
    ssh [email protected] "/path/to/sendim.sh '$1' '$3'"
    Но таким образом, к сожалению, не заработало Не хочет по ssh передавать два параметра. Может, кто подскажет, как надо.
    Прописал жестко на скайп сервере имя конференции в файле sendim.sh:
    Code:
    python2 sendim.py '#username1/$username2;c1b638c921d097b8' $1
    А в скрипте на заббикс сервере написал так:
    Code:
    ssh [email protected] "/root/sendim.sh '$3'"
    Ну а дальше дело техники, добавить в оповещения скрипт и назначить его действиям на срабатывание триггера.
Working...