CentOS6.3にSkypeBot(Skype4Py)を構築

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利用規約の承諾

連絡先の追加リクエストを承認

起動直後のポップアップ

初回起動後、コンタクト追加通知

しばらくすると、ポップアップが消えて、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からプログラムのアクセス要求ダイアログが表示されるので承認する。(初回のみ)

Skype4Pyからのアクセス許可ダイアログSkype4Pyからのアクセス許可ダイアログ(チェックボックスON)

つづけて、メッセージを送信する。

>>> chat = skype.CreateChatWith("自分のSkype名")
>>> chat.SendMessage(u"テストメッセージ!")

成功すると、自分のSkypeにBotからメッセージが送られる。

Skype4Pyメッセージ送信後

※ウィンドウマネージャー(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件のフィードバック

  1. ピンバック: Skype for CentOS6.5 x86_64

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください