我正在使用telnetlib作爲簡單的telnet腳本到Juniper交換機。下面是我的代碼:telnetlib和「buf = self.sock.recv(50)」錯誤
import telnetlib
HOST = raw_input("Enter host IP address: ")
USER = raw_input("Enter Username: ")
PWD = raw_input("Enter Password: ")
TNT = telnetlib.Telnet(HOST, 23, 10)
TNT.read_until("login:")
TNT.write(USER.encode('ascii') + "\n")
TNT.read_until("Password:")
TNT.write(PWD.encode('ascii') + "\n")
TNT.write("set cli screen-length 10000\nconfigure\nshow\nexit\n")
print (TNT.read_all().decode('ascii'))
TNT.close()
raw_input ("Press any Key to Quit: ")
每當我運行此程序與瞻博網絡交換機它給我這個錯誤:
Traceback (most recent call last):
File "D:\Python\AuTel Project\Old versions and tials\Telnet (Python 2.7) V1.4.py", line 17, in <module>
print (TNT.read_all().decode('ascii'))
File "C:\Python27\lib\telnetlib.py", line 325, in read_all
self.fill_rawq()
File "C:\Python27\lib\telnetlib.py", line 516, in fill_rawq
buf = self.sock.recv(50)
timeout: timed out
我已經與思科和北電之前遇到這個問題,但我可以戰勝它思科的「terminal lenght 0」命令和北電的類似命令。我試圖在瞻博網絡上使用等價命令(set cli screen-length),但是我仍然得到相同的錯誤。我需要知道這個錯誤的含義是什麼,它的原因是什麼,以及如何克服它。
最好的問候,
您好RestRisiko,這不是因爲連接timout,我可以從運行腳本的筆記本電腦telnet到此設備。如果是因爲連接timout,它會在telnetlib.Telnet(host)命令中失敗,但是它在read_all命令中失敗。我希望你現在明白這一點。 – Amr 2011-04-03 09:42:18