CentOS 6.3にSkypeとSkype4PyをインストールしてSkypeBotサーバとするためのメモ
勉強会やカンファレンスに行くと、開発プロセスの中でIRCを使って、CIやデプロイを行っている話をよく聞きます。
参考: ニコニコ静画(電子書籍)の作り方 ~みんながニコニコしてくれる読書体験を届けるために~
それを見ていると、勤めている会社でも導入したいなと思いますが、IRCを新規に導入するのは面倒なので、普段使用しているSkypeで何とかできないかなと検索した結果、Skype4Pyなるものがあると知りました。
そこで試しにVMWare上にSkypeBotサーバを構築してみました。
SkypeはGUIアプリなのでX環境が必要ですが、サーバは非GUI環境を想定して、GNOMEなどの統合デスクトップ環境をインストールせず、Xvfb上でSkypeを動かし、Skypeに対する操作はx11vncを使ってVNCを使う方法がありましたので、今回はそれで行います。
#はルートユーザのコマンドプロンプトです。
ファイル編集中の+や-は追加と削除を意味します。
初期準備・設定
用意したもの
- SkypeのBot用アカウント取得
- Skypeで自身のアカウントの連絡先にBotアカウントを追加しておく
- VMwareにCentOS-6.3-i386-minimal.isoを使ってインストール。puttyなどでSSHでアクセスする。
SELinuxを無効
# vi /etc/sysconfig/selinux -SELINUX=enforcing +SELINUX=disabled
ファイアウオール無効
便宜上無効に、実運用時はきちんと設定するように。
# yum install -y system-config-firewall-tui # system-config-firewall-tui ファイアーウォールの有効のチェックを外して、OK 設定を反映するため再起動
Skype本体インストール
参考サイト:HowTos/Skype – CentOS Wiki
# yum install -y glibc.i686 nss-softokn-freebl.i686 alsa-lib.i686 libXv.i686 \ libXScrnSaver.i686 libtiff.i686 glib2.i686 libSM.i686 libXrender.i686 fontconfig.i686 \ pulseaudio-libs.i686 alsa-plugins-pulseaudio.i686 # cd /tmp # curl -L -O http://download.skype.com/linux/skype_static-4.0.0.8.tar.bz2 # cd /opt # tar xjvf /tmp/skype_static-4.0.0.8.tar.bz2 # ln -s skype_staticQT-4.0.0.8 skype # ln -s /opt/skype /usr/share/skype # ln -s /usr/lib/libtiff.so.3 /usr/lib/libtiff.so.4 # ln -s /opt/skype/skype /usr/bin/skype
Skype起動スクリプトと起動
参考サイト:HTTPでSkypeにBOT投稿(CentOS5編) – IT 東京 楽しいと思うこと
起動スクリプト
# yum install -y sudo xorg-x11-xauth xorg-x11-server-Xvfb # curl -L -O https://gist.githubusercontent.com/mistymagich/9806631/raw/9c5b74769969efcf4e982949c0470561ed6c096c/launch-skype.sh (※リンク先がなくなっていたのでForkしたものを使っています。) 設定ファイル # vi launch-skype.sh ## SkypeBot用アカウントのIDパスワードに変更 USERNAME=echo123 PASSWORD=blah ## Skypeデータ保存先の変更 -DBPATH=/srv/skype/conf +DBPATH=/var/db/skype 実行ユーザを登録 # useradd skype 必要なディレクトリと権限の設定 # mkdir /var/db/skype /var/run/skype/ /var/log/skype/ # chown skype:skype /var/db/skype /var/run/skype/ /var/log/skype/ # chmod 755 launch-skype.sh
起動テスト
# ./launch-skype.sh start Starting skype: [ OK ] # ps ax 1542 pts/0 S 0:00 Xvfb :20 -screen 0 800x600x8 -nolisten tcp 1548 pts/0 Sl 0:07 /opt/skype/skype --dbpath=/var/db/skype --pipelogin # ./launch-skype.sh stop Stopping skype: [ OK ]
サービスとして登録、自動起動設定
# mv launch-skype.sh /etc/init.d/skype # chkconfig --add skype # chkconfig skype on
launch-skype.shは内部でsudoを使っているが、sudoは初期設定でttyを必須としているため、そのままだと自動起動ができない。そこで設定を変更する。
# visudo Defaults requirettyのところを #Defaults requiretty または Defaults requirettyの後ろに Defaults:skype !requiretty を追記
VNCでサーバに接続
VNCで接続して、初期準備で登録した連絡先登録要求の承認や、Skype4.pyで作成したBotスクリプトの実行承認を行う。
参考サイト:Linux上で動くSkype用のbotを作る方法 – muddy brown thang
# yum install -y --nogpgcheck http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm # yum install -y x11vnc ipa-gothic-fonts
※必要であればFluxboxをここでインストール(詳細は下に)
# /etc/init.d/skype start # x11vnc -display :20 : : : : 05/03/2013 08:01:24 05/03/2013 08:01:24 WARNING: You are running x11vnc WITHOUT a password. See 05/03/2013 08:01:24 WARNING: the warning message printed above for more info. 05/03/2013 08:01:24 The VNC desktop is: ******.local:0 PORT=5900 ****************************************************************************** Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet? The scheme stores pixel data offscreen on the VNC viewer side for faster retrieval. It should work with any VNC viewer. Try it by running: x11vnc -ncache 10 ... One can also add -ncache_cr for smooth 'copyrect' window motion. More info: http://www.karlrunge.com/x11vnc/faq.html#faq-client-caching
VNCクライアントで接続
VNCクライアント(Ultra VNCなど)を用意して、VMware上のサーバに接続。
ポート番号は上記の「PORT=5900」のように指定されるのでそれで接続。
利用規約の同意。
連絡先の追加リクエストを承認
起動直後のポップアップ
しばらくすると、ポップアップが消えて、Skypeの通知部分に表示されます。
連絡先の追加要求ダイアログ
追加後
Skype4Pyのインストール~メッセージ送信テスト
Skype4Pyのインストール
別ターミナルを立ち上げる。
# yum install -y python-setuptools dbus-python pygobject2 dbus-x11 # service messagebus start # easy_install Skype4Py
メッセージ送信テスト
# export DISPLAY=:20 # python Python 2.6.6 (r266:84292, Jun 18 2012, 14:10:23) [GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import Skype4Py >>> skype = Skype4Py.Skype(Transport='x11') >>> skype.Attach() >>>
ここで、Skypeからプログラムのアクセス要求ダイアログが表示されるので承認する。(初回のみ)
つづけて、メッセージを送信する。
>>> chat = skype.CreateChatWith("自分のSkype名") >>> chat.SendMessage(u"テストメッセージ!")
成功すると、自分のSkypeにBotからメッセージが送られる。
※ウィンドウマネージャー(Fluxbox)のインストール
XvfbだけでSkypeを起動すると、ウィンドウ枠がないため、ウィンドウを閉じる等の操作ができない。
(方法があるかもしれませんが、わかりませんでした。)
そこで、軽量のウィンドウマネージャーのFluxboxをインストールして操作性を向上します。
# rpm -Uvh http://mirrors.coreix.net/fedora-epel/6/i386/epel-release-6-8.noarch.rpm # yum install -y fluxbox # /etc/init.d/skype start # export DISPLAY=:20 # /usr/bin/startfluxbox &
“CentOS6.3にSkypeBot(Skype4Py)を構築” への1件のフィードバック