写一个python脚本来读取两个参数,这两个参数是主机和端口,我需要达到和打印状态?
示例文件: cat ipaddressrouter.txt ‘172.217.163.164’:80 “192.168.1.0”:22 以下是我尝试过的,但我遇到了一个错误:写一个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
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地址中删除尾随空格
非常感谢,这很有效!