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ディレクトリのリンクを使用する必要があります。

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


All Articles