「サーバの障害情報とかエラーログとか、簡単にSkypeに投稿できればなー」
というわけでHTTPで投稿できるようにしてみました
botサーバにむけてこんな感じのURL叩くと指定したチャットに投稿できます
http://192.168.1.11/skype/chat.py/chat?chat_name=botTest&msg=日本語投稿テスト
サーバからでもcurlでサクッと
curl "http://192.168.1.11/skype/chat.py/chat?chat_name=botTest&msg=curlで投稿テスト"
POSTで投稿できるようにしよう
手順
作業開始時の環境
Skypeのバージョンが変わるのでCentOS6系だと違う手順になると思います
Bot用アカウント作る
テキトウに作りましょう
Skypeをインストールする
公式Wikiの手順ベース
http://wiki.centos.org/HowTos/Skype
最新版のSkypeはCentOS5系では動かないのでちょっと古いのをインストールする
# yum install glibc.i686 alsa-lib.i386 libXv.i386 \ libXScrnSaver.i386 libSM.i386 libXi.i386 libXrender.i386 \ libXrandr.i386 freetype.i386 fontconfig.i386 zlib.i386 \ glib2.i386 libstdc++.i386 # cd /tmp # wget http://download.skype.com/linux/skype_static-2.1.0.47.tar.bz2 # cd /opt # tar xjvf /tmp/skype_static-2.1.0.47.tar.bz2 # ln -s skype_static-2.1.0.47 skype # ln -s /opt/skype /usr/share/skype # ln -s /opt/skype/skype /usr/bin/skype
xtermからskypeを起動
承認&botアカウントでログイン
起動した
コンタクトの追加やグループチャットの作成をやっておきましょう(Windowでやったほうが簡単)
まずはGUIでBotプログラムの実行
Skype4Pyを使います
ドキュメントはここ
# yum install python-setuptools # easy_install Skype4Py # easy_install ctypes
とりあえず指定したアカウントにメッセージを送るプログラムを作成
※先にコンタクト追加しとこうね!
# encoding: utf-8 import Skype4Py skype = Skype4Py.Skype(Transport='x11') skype.Attach() chat = skype.CreateChatWith("<送信先アカウント>") chat.SendMessage(u"テストメッセージ!")
初回はアプリからの接続を許可を聞かれるので「この選択を記憶する」をチェックして「はい」押しちゃいましょう
メッセージが届いたらGUIでの動作確認は完了!!!
GUIなしで起動できるようにする
ランレベル3で再起動
# vi /etc/inittab ... id:3:initdefault: ... # reboot
Skypeをデーモン起動する
起動スクリプトをダウンロード
https://gist.github.com/557242
パーミッションの調整がめんどうだからapacheユーザで起動する
# wget https://raw.github.com/gist/557242/9c5b74769969efcf4e982949c0470561ed6c096c/launch-skype.sh # vi launch-skype.sh ※このへん編集 ------------------------ # chkconfig: 345 80 10 # description: skype daemon ←追加 # processname: skype DAEMON_USER=apache DBPATH=/var/db/skype USERNAME=<BOTアカウント> PASSWORD=<BOTアカウントのパスワード> ------------------------ # mkdir /var/db/skype /var/run/skype/ /var/log/skype/ # chown apache.apache /var/db/skype /var/run/skype/ /var/log/skype/ # mv launch-skype.sh /etc/init.d/skype # chmod 755 /etc/init.d/skype # /etc/init.d/skype start # chkconfig --add skype # chkconfig skype on
x11vncを使ってVNC可能に
EPELからインストール。xinetdでデーモン化します。
# yum install xinetd # rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm # yum install x11vnc # vim /etc/xinetd.d/x11vnc service x11vnc { port = 5900 type = UNLISTED socket_type = stream protocol = tcp wait = no user = apache server = /usr/bin/x11vnc server_args = -inetd -o /var/log/skype/xinetd.log -display :20 -xauth /var/run/skype/Xauthority disable = no } # /etc/init.d/xinetd restart
※コマンドラインでx11vncを起動する場合はこんな感じ
# sudo -u apache /usr/bin/x11vnc -display :20 -xauth /var/run/skype/Xauthority
HTTPでブックマークしたチャットに投稿
mod_python使います
pythonプログラムを設置
# yum install mod_python # vim /etc/httpd/conf.d/skype.conf Alias /skype/ /var/www/skype/ <Directory /var/www/skype/> AddHandler mod_python .py PythonHandler mod_python.publisher </Directory> # /etc/init.d/httpd start # chkconfig httpd on # mkdir /var/www/skype/ # vi /var/www/skype/chat.py
プログラムはとりあえずこんな感じ
# -*- coding: utf-8 -*- import Skype4Py import os from mod_python import apache def index(): return "Hello! index" def chat(req, chat_name, msg): os.environ["DISPLAY"] = ":20" os.environ["XAUTHORITY"] = "/var/run/skype/Xauthority" skype = Skype4Py.Skype(Transport='x11') skype.Attach() chat = getChat(skype, chat_name) chat.SendMessage(msg) req.write(msg) def getChat(skype, chatName): for chat in skype.BookmarkedChats: if chat.FriendlyName == chatName: return chat
これで冒頭のURLにアクセスすれば指定したチャットにメッセージが出てくるはず!!!