简体   繁体   中英

Python 2.7 telnetlib For Loop

I am writing a simple script in python , to telnet multiple cisco switches and add vlans. I am testing my script in UNET LABS or latest EVE-NG. When I telnet to multiple switches using FOR loop and call tn = telnetlib.Telnet(HOST) from with in loop , it only telnets to last value in variable HOST ie 10.1.1.7

Here is my code,

#!/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")

Following code is working for me. Put all of your IPs in a sheet (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())

This python script below works for me for the same purpose

#!/usr/bin/env python3
import getpass
import telnetlib
user = input("Enter your Telnet Username: ")
password = getpass.getpass()

DeviceList=open('/home/tt/Hostname.txt')
for HOST in DeviceList:
    print('Configuring on Device : ',HOST)
    tn = telnetlib.Telnet(HOST)
    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"enable\n")
        EnPass=input('Enter your Enable password : ')
        tn.write(EnPass.encode('ascii')+b'\n')
        c=open('/home/tt/Commands.txt')
        for i in c:
            tn.write(i.encode('ascii')+b'\n')
        c.close()
        print(tn.read_all().decode('ascii'))
        tn.close()
DeviceList.close()}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM