Powershell一括Telnetポートスクリプト

3629 ワード

背景


作業時には、本番機と端末機の間のネットワークが通じているかどうかをテストする必要があります.生産機器の数が多いため、端末ごとにログインする際に手動telnetでポートが通じるかどうかをテストする方法は時間がかかります.この背景には、スクリプトを使用して部分的な作業を自動的に完了する必要があります.stackoverflowでも同様の問題が提起されているAutomate Telnet Port Testing On Windows 7 Using Batch Scriptは、オペレーティングシステムがWindows 7の端末に対して、powershellスクリプトを書くことでこのタスクを完了することができます.以下のスクリプトは、この質問の答えに基づいて、ipおよびポートを1つずつ入力してテストする方法を、予め用意した文書ドキュメントパラメータを行単位で読み出す方法に変更します.

スクリプトの内容

#powershell ExecutionPolicy Bypass
#powershell -File ./t2.ps1

$iplist = Get-Content C:\iplist.txt
$regH = "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b"
$regP = "\s(?\d{1,5})"
$remoteHost = ""
$Port = ""
foreach ($i in $iplist){
    if($i -match $regH){
        $remoteHost = $Matches[0];
        #write-host "$remoteHost";
    }
    if($i -match $regP){
        $Port = $Matches.alp;
        #write-host "$remotePort";
    }

    try {
        $socket = new-object System.Net.Sockets.TcpClient($remoteHost, $port)
    } catch [Exception] {
        write-host $remoteHost":"$port "Unconnected`n"
       #write-host $_.Exception.GetType().FullName
       #write-host $_.Exception.Message
        continue
    }
    write-host $remoteHost":"$port "Connected`n"
}

ポートおよびアドレスのリストファイルの例


パスC:\iplist.txtのファイルの内容は、概ね次のとおりです.
127.0.0.1 8080
127.0.0.1 80

スクリプトの実行


このスクリプトを実行する前に、準備されたiplist.txtを指定したパスの下に置き(ここで指定したパスはC:iplist.txt)、powershellの下に戻って次のコマンドを入力して実行権限を取得します.
powershell ExecutionPolicy Bypass

権限を取得したら、次のコマンドを入力してスクリプトファイルを実行します.
powershell -File ./t2.ps1

小結


このスクリプトには、主に3つの作業が含まれています.1.準備したiplistを読み込みます.txtファイル2.正則を使用して、テストが必要なipとポート番号を行ごとに取り出す.取り出したipとポート番号をSystemに記入する.Net.Sockets.TcpClient関数で対応するipおよびポートをテストします.一般的な正規とは異なる点は?です.この部分の一般的な解釈から、PowerShellでの正規表現の運用がわかります.