ネットワーク機器は telnet で設定変更するのですが、これを PowerShell 使って自動化できないかなと始めたのがこの class を作ったスタートでした。
当初は、.NET Framework の telnet client class
を使えば簡単じゃんと思っていたのですが、.NET Framework には telnet client class
なんて便利なものはないってことに気が付き... orz
(telnet client があるスクリプト系って結構多いので、.NET
Framework にもそのくらいはあると思ったのですけど...)
無いのなら自分で作ってしまえって事で作り始めました。
telnet.exe の動きをパケットキャプチャしてみると、telnet プロトコルでは、client と server 間でネゴシエーションしているし... これは RFC 真面目に読まないとって事で久々に RFC 読んで、パケットキャプチャとテスト実装で謎解き開始。
そんなこんなで、PowerShell の class に実装したのがこいつです。
PowerShell (v5 以降) で使用できる telnet client class です。
ネットワーク機器等 telnet を使用して設定する機器を自動設定するのに使えます。
・機器に対する telnet 接続
・コマンド送信(login / logoff 含む)
・コマンド送信結果受信
・切断
・機器の自動設定 ww
telnet client 機能しか実装していないので、自動設定に必要な処理は自分で書く必要があります。
この class を継承して機器用のカスタムクラスを作るのもよし、この telnet client class をそのまま使ってスクリプトを書くもよし
同梱しているサンプル実装をお見せすると、こんな感じで使えます。
[ Telnet Client class を継承したクラスを作った場合の実装サンプル ]
|
[ Telnet Client class を裸で使う場合の実装サンプル ]
|
.zip 配布しているので、PowerShell の wget でダウンロードしてください。
(Web
ブラウザーでダウンロードすると、信頼されていないスクリプトになってしまう)
$DownLoadPath = "C:\TelnetClass" $DownLoadFile = "TelnetClient.zip" $DownLoadFilePath = Join-Path $DownLoadPath $DownLoadFile $URI = "http://www.vwnet.jp/Windows/PowerShell/ps1/TelnetClient.zip" if(-not(Test-Path $DownLoadPath)){md $DownLoadPath} wget -OutFile $DownLoadFilePath -Uri $URI Get-FileHash -Algorithm SHA256 -Path $DownLoadFilePath ii $DownLoadPath |
sha256 ハッシュ | ED412D52A08C1CAC5A23CA4C689B273C520FABFEE91F206DFE6EF1A1E305D39B |
bitbucket でリポジトリ公開しています
https://bitbucket.org/MURAatVWNET/telnet-client-class
2017/09/03 | 公開 |
PowerShell Class
http://www.vwnet.jp/Windows/etc.asp#PowerShell_Class
Copyright © MURA All rights reserved.