telnetlib使用比較簡單吃挑,寫了個(gè)例子琐鲁,可以看看整個(gè)telnet過程:
print('------------------------connect---------------------------')#連接Telnet服務(wù)器tn =telnetlib.Telnet(host, port)
tn.set_debuglevel(5)print('-------------------------login----------------------------')#輸入登錄用戶名tn.read_until('login:')
tn.write(username+'\n')if(password !=''):#輸入登錄密碼tn.read_until('password:')
tn.write(password+'\n')#登錄完畢后執(zhí)行命令print('-----------------------send over---------------------------')
tn.read_until(finish)
tn.write(commands+'\n')print('-------------------------output----------------------------')
time.sleep(.1)
result=tn.read_very_eager()printresult
tn.close()#tn.write('exit\n')print('--------------------------end------------------------------')
流程和手工進(jìn)行telnet流程相一致柿隙,主要需要注意兩點(diǎn)內(nèi)容:
1.輸入后需要等待相應(yīng)的提示符乎芳。比如:連接完成需要等待用戶名提示符,用戶名輸入完后需要等待密碼提示符等等。
2.在等待telnet命令結(jié)果時(shí)候的處理擂达。如果使用read_until(),可能無法判斷到底會(huì)回顯什么字符串胶滋,如果不一致會(huì)一直卡在這里板鬓。如果用read_all()的話,如果回顯沒返回EOF也會(huì)卡在這里究恤。比較好的做法是使用read_very_eager()俭令,最多加個(gè)延遲就可拿到全部的結(jié)果。