12 Temmuz 2010

Komut Satırından XMPP Mesajı Göndermek

Kurum içinde anında mesajlaşma altyapısında Jabber protokolünü kullanan Openfire Server'ı kullanıyorum. Hazır altyapı varken serverların sistem bildirimlerini anında mesajlaşma yazılımı üzerinden almak güzel olur diye düşünerek çıktım yola. Zincirin eksik halkası, komut satırından bu işi yapacak program. Aramalarımda bulduğum güzel ise: sendxmmp

Önce kuralım (Ubuntu Server'a kurulum anlatılmıştır):
# apt-get install sendxmpp


Kullanıcı adı, server, port bilgilerini gireceğimiz .sendxmpprc dosyasını kullanıcı dizinine oluşturuyoruz. Kullanılabilecek formatlar şöyleymiş:

CONFIGURATION FILE

You may define a ’~/.sendxmpprc’ file with the necessary data for your
xmpp-account, with a line of the format:

user@server password componentname

e.g.:

# my account
alice@jabber.org secret

(’#’ and newlines are allowed like in shellscripts). You can add a host
(or IP address) if it is different from the server part of your JID:

# account with specific connection host
alice@myjabberserver.com;foo.com secret

You can also add a port if it is not the standard XMPP port:

# account with weird port number
alice@myjabberserver.com:1234 secret

Of course, you may also mix the two:

# account with a specific host and port
alice@myjabberserver.com;foo.com:1234 secret

NOTE: for your security, sendxmpp demands that the configuration file
is owned by you and readable only to you (permissions 600).



Ben şu formatı kullandım:
Kullanıcı@server.com:Port Şifre

Aslında bu dosyayı oluşturmadan da bilgileri parametrelerle girerek mesaj göndermek mümkün. Fakat bu durumda kullanıcı ve şifre deşifre olacağından ben güvenlik adına bu şekilde kullanmayı tercih etmiyorum. Zaten program da güvenliği önemsediğini .sendxmpprc dosyasının izinlerini 600 yapmadan çalışmayarak bize gösteriyor. Konfigürasyon dosyasına gerekli bilgileri girdikten sonra hemen dosya izinlerini düzenliyoruz:
chmod 600 ~/.sendxmpprc

Bu ayarlar normalde yeterli fakat Openfire Server kullanıyorsanız şu hata mesajı geliyor.
# echo "Bu bir komut satırı mesajıdır" | sendxmpp -s  Konsol mesajı test@abc.local
Error 'AuthSend': error: not-authorized[?]



Ye
tklendirmede yaşanan bu sorunu çözmek için, /usr/share/perl5/Net/XMPP/Protocol.pm dosyasını açıyoruz:
nano /usr/share/perl5/Net/XMPP/Protocol.pm


Aşağıdaki satırı buluyoruz:
  • return $self->AuthSASL(%args);

Başına # (diyez) koyuyoruz ve dosyayı kayıt ediyoruz:
  • #return $self->AuthSASL(%args);

Şimdi bir mesaj denemesi yapabiliriz:

echo "Bu bir komut satırı mesajıdır" | sendxmpp -s Konsol mesajı kullanıcı@abc.loca

Hepsi bu kadar.

Şimdi swatch ile log dosyalarını dinlemeye alıp, istediğim durumlara göre swatch'ın aksiyon alarak bana anında mesaj göndermesi için kolları sıvayalım.

Kaynaklar :
[1] http://www.kilrathy.net/sites/xmpp-meldungen-via-script-senden.html
[2] http://manpages.ubuntu.com/manpages/intrepid/man1/sendxmpp.1.html
[3] http://www.djcbsoftware.nl/code/sendxmpp/