telnetによる穴あけ疎通確認ツールを作りました

ツール、できました。

出力はこんな感じ。NGのものがわかりやすく出ています。

root@syachineko-Virtual-Machine:~/work# ./telnet_tool.py test
192.168.3.1 8080
telnet: Unable to connect to remote host: Connection refused
192.168.3.1 8090
telnet: Unable to connect to remote host: Connection refused
192.179.11.11 80
Result-------------------------------
Summary Total:3  OK:2  NG:1

NG Lists-----------------------------
try <telnet 192.179.11.11 80> -->NG

-------------------------------------

 

なお、入力として以下のファイルを読ませます。

<telnetしたいIP>::<ポート番号、カンマで区切れば複数選択可能>

 

コードは以下

#!/usr/bin/python3

import subprocess
import sys

# Variables
OKLists =
NGLists =

# input data
# <IP>::<Port>

importFile = open(sys.argv[1], "r")
importFileList = importFile.readlines()
items = []
for i in importFileList:
    items.append(i.replace("\n",""))

for item in items:

    ip,ports=item.split("::")

    for port in ports.split(","):

        print(ip,port)
        ans = "try <telnet " + ip + " " + port + "> -->"

        # try command
        try:
            res = subprocess.run(["telnet",ip,port], stdout=subprocess.PIPE, timeout=1)
            ans += "OK"
            OKLists.append(ans)

         except:
            ans += "NG"
            NGLists.append(ans)

print("Result-------------------------------")
print("Summary Total:"+str(len(OKLists)+len(NGLists))+"  OK:"+str(len(OKLists))+ "  NG:"+str(len(NGLists)))
print("")
print("NG Lists-----------------------------")
for result in NGLists:
    print(result)
print("")
print("-------------------------------------")


                

特に、コマンド実行時にタイムアウトを設定して、

それをTryで判別することで成功/失敗をいい感じに分離できました。

これ、現場でも使えると楽なんだけど、どうだろうなぁ・・・。

 

以上。