Python telnet脚本循环



我有一个Telnet python脚本,它可以很好地与一个";IP";但是当我加上";对于";在多个IP上工作它给了我一个错误。

这是我的脚本:

import getpass
import telnetlib
HOST = "192.168.122.240,192.168.122.241"
user = input("Enter your remote account: ")
password = getpass.getpass()
for ip in HOST:
tn = telnetlib.Telnet(ip)
tn.read_until(b"Username: ")
tn.write(user.encode('ascii') + b"n")
if password:
tn.read_until(b"Password: ")
tn.write(password.encode('ascii') + b"n")
tn.write(b"enablen")
tn.write(password.encode('ascii') + b"n")
tn.write(b"conf tn")
tn.write(b"vlan 100n")
tn.write(b"name TEST_PYn")
tn.write(b"endn")
tn.write(b"logoutn")

这是我的错误:

Traceback (most recent call last):
File "telnet.py", line 9, in <module>
tn = telnetlib.Telnet(ip)
File "/usr/lib/python3.5/telnetlib.py", line 218, in __init__
self.open(host, port, timeout)
File "/usr/lib/python3.5/telnetlib.py", line 234, in open
self.sock = socket.create_connection((host, port), timeout)
File "/usr/lib/python3.5/socket.py", line 711, in create_connection
raise err
File "/usr/lib/python3.5/socket.py", line 702, in create_connection
sock.connect(sa)
OSError: [Errno 22] Invalid argument

有人能告诉我我做错了什么吗?谢谢,

循环在多个项目上迭代。

您当前的代码被简化以证明问题:

HOST = "192.168.122.240,192.168.122.241"
for ip in HOST:
print(ip)

为字符串中的每个字符执行循环:192,等等,因为字符串是一系列字符。

显然,您需要一个字符串序列,例如列表:

HOST = ["192.168.122.240", "192.168.122.241"]

最新更新