背景:使用python的telnetlib實作登錄到一臺交換機上,進行一些重啟的操作(輸入交換機的一些命令),每次操作間隔300秒,但是我在腳本中使用time.sleep(300)的時候,會導致這個telnet鏈接中斷。。
提示如下:
% Connection broken by accident or heavy network.[Telnet Server]
腳本如下:
# encoding=utf-8
def do_telnet(Host, username, password):
import telnetlib
import time
'''''Telnet遠程登錄:Windows客戶端連接'''
# 連接Telnet服務器
tn = telnetlib.Telnet(Host, port=23,timeout=400)
tn.set_debuglevel(2)
# 輸入登錄用戶名
tn.read_until('Login:')
tn.write(username + '\n')
# 輸入登錄密碼
tn.read_until('Password:')
tn.write(password + '\n')
# 登錄完畢后執行命令
tn.read_until('\r\n\r\nGPN7600A>')
tn.write('enable' + '\n')
tn.read_until('enable\r\n\r\nGPN7600A(config)#')
tn.write('\n')
time.sleep(1)
tn.write('screen idle-timeout 0' + '\n')
time.sleep(1)
tn.write('screen lines 0' + '\n')
time.sleep(1)
for RBTIMES in range(1,2):
tn.write('reboot 9' + '\n')
time.sleep(1)
tn.write('Y' + '\n')
time.sleep(300)
tn.write('show bfd state' + '\n')
time.sleep(10)
res = tn.read_very_eager()
address = '**********' + str(Host) + '__'+ 'reboot_9_slot_times:'+str(RBTIMES) + '*********\n'
f = open("E:\\reboot7600A.txt", "a")
f.write(address)
f.write(res)
f.write(address)
f.close()
# 執行完畢后,終止Telnet連接(或輸入exit退出)
tn.close() # tn.write('exit\n')
if __name__ == '__main__':
# 配置選項
Host = '133.237.234.3' # Telnet服務器IP
username = 'admin' # 登錄用戶名
password = 'admin' # 登錄密碼
do_telnet(Host, username, password)
raw_input("ENTRY ANY EXIT")
uj5u.com熱心網友回復:
sleep時間是不是太長了,導致超時了,設定斷點呢uj5u.com熱心網友回復:
可以確定是sleep時間太長了,我改time.sleep(10),就沒有問題,但是問題的背景需要實作每隔300秒執行一次。uj5u.com熱心網友回復:
可以確定是sleep時間太長了,我改time.sleep(10),就沒有問題,但是問題的背景需要實作每隔300秒執行一次。
uj5u.com熱心網友回復:
樓主,這個問題咋解決的,分享下。我也遇到一個問題,telnet到交換機,讓其復位,復位后如何再次自動telnent到交換機呢?轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/93766.html
上一篇:R語言
下一篇:Mac上Spyder無法打開
