『壹』 如何實現python和telnet通信
一、Windows下開啟Telnet服務
(詳見:與Win7防火牆無縫結合 Telnet功能測試)
1、Windows 2000/XP/2003/Vista:默認已安裝但禁止了Telnet服務
(1)開啟Telnet:運行services.msc打開服務管理,找到Telnet服務項設置其啟動類型為「自動」或者「手動」(更安全,只在需要的時候才啟用),然後啟動該服務即可。
2、Windos 7:默認未安裝Telnet服務
(1)安裝Telnet:依次點擊「開始」→「控制面板」→「程序」,「在程序和功能」找到並點擊「打開或關閉Windows 功能」進入Windows 功能設置對話框。找到並勾選「Telnet客戶端」和「Telnet伺服器」,最後「確定」稍等片刻即可完成安裝。
(2)開啟Telnet:方法同1中的(1)
二、Linux下開啟Telnet服務
(詳見:Ubuntu 10.10 下配置Telnet伺服器)
(1)安裝telnetd(即telnet-server):apt-get install telnetd
(2)安裝xinetd(telnet-server的運行需要由xinetd來管理):apt-get install xinetd
(3)配置telnet文件:vi /etc/xinetd.d/telnet
(4)開啟xinetd:service xinetd start
三、使用Python實現Telnet遠程登錄
Python中專門提供了telnetlib庫,用來完成基於telnet協議的通信功能。
『貳』 我想用python腳本telnet電腦Ensp里的交換機,但是沒效果,也沒報錯,是有什麼問題嗎求解答
1、在備份配置之前進行ping操作,所有IP地址放在HW_IP_List.txt中,ping通的地址放到HW_IP_True.txt中,ping不通的地址放到HW_IP_False.txt中。
腳本文件icmp_reply.py
#!/usr/bin/python
# -*- coding:gb2312 -*-
#import tab
import time,os
start_time = int (time.time())
def hw_ping_test():
ips = open('HW_IP_List.txt','r')
ip_True = open('HW_IP_True.txt','w')
ip_False = open('HW_IP_False.txt','w')
count_True,count_False=0,0
for ip in ips.readlines():
ip = ip.replace('\n','')
return1= os.system('ping -n 1 -w 1 %s'%ip)
if return1 :
print 'ping %s is fail'%ip
ip_False.write(ip+'\n')
count_False += 1
else:
print 'ping %s is ok'%ip
ip_True.write(ip+'\n')
count_True += 1
ip_True.close()
ip_False.close()
ips.close()
end_Time = int(time.time())
print "time(sencond):",end_Time - start_time,"s"
print "ping OK IP:",count_True," ping False IP:",count_False
hw_ping_test()
2、編輯核心腳本,調用icmp_reply.py,程序執行時會先自動運行icmp_reply.py,調用生成的HW_IP_True.txt文件,先要選擇設備類型,然後選擇執行的動作,輸入TFTP伺服器地址,程序就開始執行選擇的相應的動作。
『叄』 python telnet後如何保存執行tn.write()命令輸出的信息 ...
#python3中實現方法
import telnetlib
import os
def do_telnet(Host, username, password, finish,command):
'''Telnet遠程登錄:Windows客戶端連接ZTE olt'''
# 連接Telnet olt
tn = telnetlib.Telnet(Host, port=23, timeout=10)
tn.set_debuglevel(2)
# 輸入登錄用戶名
tn.read_until(b'Username:')
tn.write(username + '\n')
# 輸入登錄密碼
tn.read_until(b'Password:')
tn.write(password + '\n')
# 登錄完畢後執行命令
tn.read_until(finish)
tn.write(command+b'\n') #這種保存方法失敗,求決解
#要用read來獲取輸出內容,decode是將位元組碼數據解碼成人類可讀的數據
t = tn.read_very_eager().decode('utf-8')
#執行完畢後,終止Telnet連接(或輸入exit退出)
tn.read_until(finish)
tn.close() # tn.write('exit\n')
print ('finished')
#將結果作為返回值
return t
if __name__=='__main__':
# 配置選項
Host = '192.168.0.253' # Telnet伺服器IP
username = b'ZTE' # 登錄用戶名
password = b'zte' # 登錄密碼
finish = b'c300#' # 命令提示符
command = b'show mac'
#獲取返回的結果
content = do_telnet(Host, username, password, finish, command)
print(content)