2017-04-25 98 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())