Twitterを介した簡単なLinux管理

こんにちは、Habrausers様。



この投稿は、Twitterボットと彼のためのあらゆる種類のホイッスルダンサーに関する記事の登場に触発されています。 Twitter APIの私のビジョンを紹介します。 猫へようこそ。



そのため、タイトルが示すように、ボットアプリケーションはツィーターAPIを使用してオンボードのLinuxマシンを制御します。



開発言語としてpythonが選択され、その結果、tweepyライブラリが選択されました。 このライブラリの初期セットアップのHoutは、上記のリンクにあります。



構成


対象に直接進みます。 このコードは完全なLinuxデーモンとして設計されており、構成ファイルがあり、プラグインで動作します。



構成ファイルを検討してください。

# Twitter credentials

CONSUMER_KEY = ''

CONSUMER_SECRET = ''

ACCESS_KEY = ''

ACCESS_SECRET = ''



# base path

BASE_PATH = os.path.dirname(__file__)



# pid path

PID_PATH = BASE_PATH+'/elmot.pid'



# people nicknames who can manage system

AUTHORIZED_ACCOUNTS = []



# logfile

LOG_PATH = BASE_PATH+'/log/elmot.log'

ERROR_LOG_PATH = BASE_PATH+'/log/elmot.err'



# type None to disable incoming message log

INCOMING_MESSAGE_LOG = BASE_PATH+'/log/incoming.log'



# run elmot as user (do not use root)

RUN_UID = pwd.getpwnam("root").pw_uid








すべてが透明です。 作業を開始するには、先ほど取得したフィールドconsumer_key、c​​onsumer_secret、ユーザーキー-access_keyおよびaccess_secretを入力するだけです。 AUTHORIZED_ACCOUNTSでシステムの制御を許可されている人のニックネームを追加することも必要です。



プラグイン


プラグインに移りましょう。 すべての機能は、彼らの助けによってのみ提供されます。 プラグインテンプレートは次のとおりです。

class Plugin(object):

name = 'undefined'

keyword = 'undefined'

# actions:

# 0 - silent

# 1 - private message

# 2 - tweet to timeline

action = 2

controlled = True

def __init__(self):

print '*', self.name, 'loaded'

def execute(self, message):

pass



# run method only for non controlled plugins

# for threading support with python Threads

def run():

pass






nameはプラグインの名前、keywordはアクセスするための一意の識別子です。

アクション-必要なアクション、つまり、プラグインはサイレントにするか、PMで応答するか、タイムラインに書き込むことができます。

制御されたフィールドは、プラグインが対話型であるかどうか、つまりクライアントメッセージを受信して​​処理するかどうかをプラグインに伝えます。 プラグインが対話型の場合、プラグインは個人の電子メールでボットに着信するメッセージをリッスンし、メッセージがそれに宛てられた場合、executeメソッドを呼び出します。このメソッドでは、何でも実装できます。 プラグインが「サイレント」の場合、別のスレッドでrun()メソッドからコードを実行します。



使い方


ボットに「キーワードコマンド引数」という形式のプライベートメッセージを送信するだけです。 ボットはメッセージを解析し、処理のために適切なキーワードとともにプラグインに送信します。 たとえば、稼働時間プラグインを考えます。 キーワードを1つだけ受け取ります-キーワードと、そのタイムラインで稼働するマシンを報告します。



実装されたプラグイン


conntest-リモートホストとのリンクの常時チェック。 彼はタイムラインの問題について書いています。

removetweets-ボットのタイムラインからn個のツイートを削除します(例「removetweets 5」)。

sshmonitor-auth.log解析に基づくsshサーバー監視。 認証エラーに関するタイムラインを書き込みます。

稼働時間-マシンの稼働時間を表示します。



それだけです。あなたは自分の好みに合わせて任意のプラグインを実装し、ツイッター経由で何かを監視(またはサービスを再起動)することができます。



ご意見をお寄せいただきありがとうございます。

githubの PSコード。

PPSデーモンを起動するには、binディレクトリのリンクを使用する必要があります。



All Articles