2017-04-25 97 views
0

我在python中编写了一个简单的脚本,用于telnet多个cisco交换机并添加vlans。我正在UNET LABS或最新的EVE-NG中测试我的脚本。 当我使用FOR循环远程登录到多个交换机和呼叫 TN = telnetlib.Telnet从与在循环中,仅Telnet到即10.1.1.7Python 2.7 telnetlib For循环

在这里,在可变HOST最后的值(HOST) 是我的代码,

#!/usr/bin/env python 

import getpass 
import sys 
import telnetlib 

user = raw_input("Enter your telnet username: ") 
password = getpass.getpass() 


for h in range (2,8): 
    print "Telnet to host" + str(h) 
    HOST = "10.1.1." + str(h) 
    tn = telnetlib.Telnet(HOST) 

    tn.read_until("Username: ") 
    tn.write(user + "\n") 
    if password: 
     tn.read_until("Password: ") 
     tn.write(password + "\n") 

    tn.write("conf t\n") 

    for n in range (10,20): 
     tn.write("vlan " + str(n) + "\n") 
+0

只需复制粘贴,并在输出运行你的代码会导致'远程登录到主机2'与该主机什么也没有发生在这里并不存在,但它显然与主机开始。2.您可以发布您运行的输出或者它只是telnet行为奇怪,并且打印的输出看起来不错? –

回答

0

以下代码正在为我工​​作。把所有的IP放在一张表中(IP_test.txt)。

import getpass 
    import sys 
    import telnetlib 
    user = "YOURUSER" 
    password = "YOURPASSWORD" 
    with open('IP_test.txt') as file: 
      for HOST in file: 
        tn = telnetlib.Telnet(HOST) 
        tn.read_until("login: ") 
        tn.write(user + "\n") 
        if password: 
            tn.read_until("Password: ") 
            tn.write(password + "\n") 
            tn.write("Command1\n") 
            tn.write("Command2\n") 
            print(tn.read_all())