写一个python脚本来读取两个参数,这两个参数是主机和端口,我需要达到和打印状态?

写一个python脚本来读取两个参数,这两个参数是主机和端口,我需要达到和打印状态?,python,scripting,Python,Scripting,示例文件: cat ipaddressrouter.txt ‘172.217.163.164’:80 “192.168.1.0”:22 以下是我尝试过的,但我遇到了一个错误: import re import socket from multiprocessing import process sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) with open("/coder/Downloads/ipaddressrou

示例文件: cat ipaddressrouter.txt

‘172.217.163.164’:80

“192.168.1.0”:22

以下是我尝试过的,但我遇到了一个错误:

import re
import socket
from multiprocessing import process
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
with open("/coder/Downloads/ipaddressrouter.txt",'r') as ip_add:
for eachline in ip_add:
    ip = eachline.strip().split(':')[0]
    a= ip.replace("'","")
    print(a)
    port = eachline.strip().split(':')[1]
    print(port)
    result = sock.connect_ex((str(a),int(port)))
    process(result)

ERROR- result = sock.connect_ex((str(a), int(port)))
socket.gaierror: [Errno 8] nodename nor servname provided, or not known

由于
ip地址
中有尾随空格,因此出现错误。 我已经改进了下面的代码以适合您的用例

import socket
from multiprocessing import process

with open("/coder/Downloads/ipaddressrouter.txt",'r') as ip_add:
    for eachline in ip_add:
        # since it's a list with 2 values, we can get the values in one go.
        ip, port = eachline.strip().split(':')

        # added here is '.strip()' to remove trailing white spaces.
        ip = ip.replace("'", "").strip() 

        print(ip, port)

        # a new socket would have to be created for each ip and port
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        result = sock.connect_ex((str(ip), int(port)))

        # closing the socket once done.
        sock.close()
    
        print("RESULT", result)

ip地址中删除尾随空格
非常感谢,这很有效!