jabberコンソールからのインスタントメッセージ

xmppロゴ 多くの場合、システム管理者は、成功したsshログインのレポート、負荷の急激な増加、サービスの低下、バックアップ電源への切り替えに関するメッセージ、または湯沸かしなど、サーバー上のイベントについて自分や同僚に通知するタスクを持っています。
ほとんどの場合、この問題は、たとえばメールメッセージを送信することで解決されます。 しかし、メッセージが最初に時間どおりに到着すること、そして次にメッセージがすぐに読み取られることを保証することはできません。 次に、管理者は、IMを使用すると考えます。 しかし、どのように? たとえば、画面の中心を常に開いたままにするには? 同意してください、最も虹のオプションではありません。
チップとDaleオープンプロトコルXMPPは急いでいます。 人気のある言語やコード例に対する多くの拡張機能が作成されており、必要な人にメッセージを送信して、すぐに送信できます。
そのようなコードの例を挙げます。

そのような機能が必要になったとき、C、php、perl、pythonなどの一般的な言語の既存のソリューションを調べました。 既製のクラスを使用することを提案した人もいれば、モジュールのロードを使用する人もいました。 コードは途方もなくかさばって読めず、エレガントなソリューションを探していました。 そして、それはPythonで発見されました。

したがって、Linuxで作業することに同意しましょう。 実際、スクリプトはおそらくWindows上で動作するでしょうが、私はそのような目標を自問しませんでした。 実際には、python自体と、2つのモジュール-任意のdnsxmpppyが必要です 。これらはDebianでpython-xmppパッケージで表されます。

スクリプトコードは次のとおりです。

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import xmpp,sys

xmpp_jid = 'noreply@some.jabber.server'
xmpp_pwd = 'noreplypass'

to = sys.argv[1]
msg = sys.argv[2]

jid = xmpp.protocol.JID(xmpp_jid)
client = xmpp.Client(jid.getDomain(),debug=[])
client.connect()
client.auth(jid.getNode(),str(xmpp_pwd),resource='xmpppy')
client.send(xmpp.protocol.Message(to,msg))
client.disconnect()


スクリプトは、渡されたJIDとパスワードを使用して、サーバー上で承認され、メッセージを送信して接続を閉じます。 どこも簡単です。 スクリプト用に別のアカウントを作成する必要があります(ただし、jabberは異なるリソースとの複数の同時接続を許可します)。変数xmpp_jidおよびxmpp_pwdに資格情報を入力します。

コードをファイルに保存し、実行可能にし、実行します。 起動は次のとおりです。

/home/username/scripts/send_xmpp_message username@email.server.ru ", , "


幻想の飛行は無制限です。たとえば、わずかな変更を加えると、引数を渡したり、crontabを使用したり、スケジュールに従ってメッセージを送信したりする代わりに、データをスクリプトにリダイレクトすることが可能になります。

Source: https://habr.com/ru/post/J85407/


All Articles