Уведомления

Группа в Telegram: @pythonsu

#1 Июль 1, 2014 14:49:40

chipset
Зарегистрирован: 2014-06-28
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

Теперь еще переделал что бы ip брал из файла. Работает но на последнем не завершается а висит пока не остановишь сам.

#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
import sys
import telnetlib
def connect():
    user ="admin"
    password ="pass"
#    host = '172.29.114.141'
    tn = telnetlib.Telnet(host,23,15)
#    tn.set_debuglevel(1)
    tn.read_until("Login:",5)
    tn.write(user+"\n")
    tn.read_until("Password:",5)
    tn.write(password+"\n")
    tn.read_until(">",5)
    tn.write("ena\n")
    tn.read_until("Password:",5)
    tn.write(user+"\n")
    return tn
def comand(tn):
    tn.write("sh ver\n")
    tn.write("sh inter port\n")
    tn.write("q\n")
    print tn.read_all()
def disconnect(tn):
    tn.close()
    s = tn.read_all()
#    print type (s)
    print s
f = open ('test.txt')
host = f.readline()
while host:
    print host
    tl = connect()
    comand(tl)
    disconnect(tl)
    line = f.readline()
f.close ()

Отредактировано chipset (Июль 1, 2014 14:50:55)

Офлайн

#2 Июль 1, 2014 14:59:35

chipset
Зарегистрирован: 2014-06-28
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

f = open('test.txt')
for host in f.readlines():
    print (host)
Переделал через for и readlines. Так работает нормально.

Отредактировано chipset (Июль 1, 2014 15:00:18)

Офлайн

#3 Июль 1, 2014 15:59:55

chipset
Зарегистрирован: 2014-06-28
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

Теперь решил вынести функции в модуль:
Основной файл:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
import sys
import telnetlib
import test
f = open('ip.txt')
for host in f.readlines():
#    print (host)
    tl = test.connect()
    test.comand(tl)
    test.disconnect(tl)
test.py:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
import sys
import telnetlib
def connect():
    user ="admin"
    password ="pas"
#    host = '172.29.114.141'
    tn = telnetlib.Telnet(host,23,15)
#    tn.set_debuglevel(1)
    tn.read_until("Login:",5)
    tn.write(user+"\n")
    tn.read_until("Password:",5)
    tn.write(password+"\n")
    tn.read_until(">",5)
    tn.write("ena\n")
    tn.read_until("Password:",5)
    tn.write(user+"\n")
    return tn
def comand(tn):
#    tn.write("sh ver\n")
#    tn.write("sh inter port\n")
#    tn.write("q\n")
    f = open ('comand.txt')
    for comands in f.readlines():
        tn.write(comands+"\n")
    print tn.read_all()
def disconnect(tn):
    tn.close()
    s = tn.read_all()
#    print type (s)
    print s
./run.py 
Traceback (most recent call last):
  File "./run.py", line 11, in <module>
    tl = test.connect()
  File "/home/chipset/python/test.py", line 11, in connect
    tn = telnetlib.Telnet(host,23,15)
NameError: global name 'host' is not defined

Офлайн

#4 Июль 1, 2014 16:41:59

chipset
Зарегистрирован: 2014-06-28
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

Исправил в модуле поправив

def connect(host):
А в основном файле:
tl = raisecom.connect(host)
Заработало.

Офлайн

#5 Июль 1, 2014 16:56:39

chipset
Зарегистрирован: 2014-06-28
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

И еще вопрос как разорвать сессию если я послал команду reboot выход по q уже не пройдет после.

Отредактировано chipset (Июль 1, 2014 16:56:52)

Офлайн

#6 Авг. 31, 2014 23:00:52

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

reboot ты посылаешь на *nix системе ?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version