Форум сайта python.su
#!/usr/bin/python # -*- coding: utf-8 -*- import os import sys import telnetlib def connect(): user ="user" 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") tn.write("sh ver\n") tn.write("q\n") print tn.read_all() tn.close() connect()
#!/usr/bin/python # -*- coding: utf-8 -*- import os import sys import telnetlib def connect(): user ="user" 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") # tn.write("sh ver\n") # tn.write("q\n") print tn.read_all() # tn.close() def comand(): tn.write("sh ver\n") tn.write("sh inter port\n") print tn.read_all() def disconnect(): tn.close() connect() comand() disconnect()
Офлайн
Проблема в области видимости.
В функции connect() вы создали объект tn = telnetlib.Telnet(host,23,15) , а другие функции уже его не видят. Попробуйте вот так
#!/usr/bin/python # -*- coding: utf-8 -*- import os import sys import telnetlib def connect(): user ="user" 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") # tn.write("sh ver\n") # tn.write("q\n") print tn.read_all() return tn # tn.close() def comand(tn): tn.write("sh ver\n") tn.write("sh inter port\n") print tn.read_all() def disconnect(tn): tn.close() tl = connect() comand(tl) disconnect(tl)
Отредактировано ajib6ept (Июнь 28, 2014 15:24:00)
Офлайн
Так тоже не помогло:
./test.py Traceback (most recent call last): File "./test.py", line 31, in <module> tl = connect() File "./test.py", line 22, in connect print tn.read_all() File "/usr/lib/python2.6/telnetlib.py", line 325, in read_all self.fill_rawq() File "/usr/lib/python2.6/telnetlib.py", line 516, in fill_rawq buf = self.sock.recv(50) socket.timeout: timed out
Офлайн
chipsetУ вас железка недоступна. Соединение по тайм-ауту закрылось.
Так тоже не помогло:
Офлайн
Железка доступна первый вариант без функций по прежнему работает.
Офлайн
#!/usr/bin/python # -*- coding: utf-8 -*- import os import sys import telnetlib def connect(): user ="user" 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") # tn.write("sh ver\n") # tn.write("q\n") # print tn.read_all() return tn # tn.close() def comand(tn): tn.write("sh ver\n") tn.write("sh inter port\n") # print tn.read_all() def disconnect(tn): tn.close() print tn.read_all() tl = connect() comand(tl) disconnect(tl)
Офлайн
Есть разница между:
print tn.read_all() tn.close()
tn.close() print tn.read_all()
Офлайн
При таком варианте
print tn.read_all() tn.close()
./raisecom.py Traceback (most recent call last): File "./test.py", line 35, in <module> disconnect(tn) File "./test.py", line 30, in disconnect print tl.read_all() File "/usr/lib/python2.6/telnetlib.py", line 325, in read_all self.fill_rawq() File "/usr/lib/python2.6/telnetlib.py", line 516, in fill_rawq buf = self.sock.recv(50) socket.timeout: timed out
Отредактировано chipset (Июль 1, 2014 08:55:40)
Офлайн
tn.read_all() ожидает, что сервер сам закроет соединение.
Попробуй как-нибудь так:
def comand(tn): tn.write("sh ver\n") tn.write("sh inter port\n") tn.write("q\n")
Отредактировано agalen (Июль 1, 2014 09:19:17)
Офлайн
Вот так все норм. Спасибо.
Офлайн