見出し画像

TWSNMPのSSHポーリング機能(前編)

TWSNMPが稼働するパソコンでコマンドを実行するポーリング機能は

に書きました。今回は他のコンピュータでコマンドを実行して、その結果で状態を判断するポーリング機能について書きます。

他のコンピュータで安全にコマンドを実行する

今では、画面共有とかリモートデスクトップとかで他のコンピュータの画面を表示して操作することは簡単にできます。TWSNMPからこれらの方法で他のコンピュータでコマンドを実行するのは効率が悪いのと作るのも大変そうなので採用しません。昔からあるtelnetやrshで目的にコンピュータに接続してコマンドを実行する方法も考えられますが、この方法はパスワードとか誰でもみられて接続先のコンピュータが危険にさらされるのでよくありません。では、どうするかというとSSH

を使います。

TWSNMPでSSHに対応する

まず、TWSNMPがSSHで通信するために必要なことを整理します。

・GO言語のSSHパッケージ
・TWSNMP側(クライアント側)の秘密鍵、公開鍵
・通信相手のコンピュータのユーザーID、パスワード
・通信相手のコンピュータの公開鍵

使っている用語は、さっきの「SSHとは?」のサイトの説明を参考にしてください。

GO言語のSSHパッケージは、ほぼ標準の

が利用できます。みんなが使っているのでGoogleに「golang ssh」と聞けば沢山サンプルのソースコードをが見つかります。

秘密鍵と公開鍵のペアを作る話はちょっと難しいので別の機会に書こうと思いますが、GO言語だと比較的簡単に作成できます。サンプルコードも沢山あります。
作成した公開鍵は、サーバー側に登録する必要があるので、マップ設定に<公開鍵コピー>

画像1

というボタンを付けました。クリックすると

ssh-rsa c3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFDQVFEU2I1QjA5YXhtZUpiaklQK3FSRnBqcUZicUl1N0dZdmpUQTR0Y0U5a0orWFl3SXdHQWNjOFViaWcyUFVsYzZySEtBbkNjcklBcGhWZWdjNTFleG5nc1FkZitjeTBTamR1c0ZSSWlLL3d2SWR4elh4eVdoN2poa1lmeG0ySHJQRVgvL1J0Vmo5Y0N0RmJwZnJsckFFRDdCSGVxNUk1MXpTOG1NNUJnSXQ0SXRORnllTDNkR0lTNFRmM1VSNk0vN3JqQWhDSDFMVytoU1prMi80Z2pnUXBmREFybVlvazVLaHJCTjJNaElEOHhjWnhYa2JrbmF4V0ZBV0ZDRGo1RDVqNy9wQzhjOW1yMlJhMjJiSnhUa2VlKy93U1Q4MDlJc0pEWTlVU3lJMzJDd2YyVTNLTnlORWVqUUU4S2MwTjJ2Y1VkUGluY1VTeTFlYkxiaDVQUWs2MWtBb0s1a25xc2JUWXRzaUZzcFhneFhkRlQ5MEk4b25nRmlKRUppeHd5YUIzblRrdkVkT0p1RWNyMjBnSmM4b2VRNGQzNk1aV3oyMC9iMjBNT2VsUTc5VG1kMXlUTjlBK1BIY2sxaU5qMy9lSFRLSytFcE90NkRRYXpPcTB1TXFDSFQwOXpXQWRPd1BDQUQrbXJ2WW9USlI2THpmTEZkMjFVcnp0WS9uSUpjcWZzYWhhS3pVenFLVnVmY2dCYitmRm9RRnkyUUhXb1M5UGpET0tlaWdUeVk2L05mVmdKMitYYkk4Z2JyOWU3anFrUXIvUzNCdDVRWklFQS9DYnA4cksxc3dvUWVCVU9qSFlMNHg3SFRnaU8xMVAvblJKbTRCWk5ZRUJ3K1c1Y2QvRGpHbTkwYmZYLzhOVGF4Rk81djYrMjIydkovRmcwR2dCL0EwK3E2L0dqRnc9PQo= twsnmp@ymimbp.local

のようなサーバーに登録できる形式の公開鍵がコピーされます。これをサーバーに登録します。さっきの「SSHとは?」のサイトのauthorized_keysの説明です。この公開鍵はTWSNMPを相手のサーバーに信用してもらうためです。

通知相手のユーザーID、パスワード、公開鍵は、ノードの設定に

画像2

の項目を追加しました。この公開鍵はサーバーの公開鍵を登録します。これは、サーバーをTWSNMPが信用するために必要です。空欄のままにするとサーバーの公開鍵を確認しないで通信するようになります。多少安全ではなくなります。

ここまでは、うまくできましたが、コマンド実行のタイムアウトや終了コードを取得する方法で苦労した話を後編で書きます。

つづく

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。