windows下可以通過putty以ssh方式連線linux主機。但putty也有一些問題:比如沒有儲存session,亂碼等等。
偶然發現python也有ssh模組,學習的同時嘗試使用python編寫乙個類似putty的ssh客戶端。
python2.7 + pycrypto + paramiko + ecdsa
後面三個是python的擴充套件模組,實現了ssh連線功能。
安裝十分簡單,進入模組根目錄執行 python setup.py build install命令即可。
說明:linux下可按此安裝。windows下我未編譯通過,可使用編譯好的版本,直接拷貝至lib\site-packages下即可。
下面是乙個windows下編譯好的版本:win7下編譯好的python ssh模組
1)通過paramiko的ssh模組連線指定主機;
2) 通過sshclient.exec_command在遠端主機上執行命令;
3)通過exec_command返回的stdout,stdin,stderr進行互動;
4)儲存成功連線的主機資訊(session),可以通過ls命令檢視, session id命令,直接啟動新連線;
5)可在windows和linux下執行,寫程式時需要注意他們的差別。
#!/usr/bin/python# -*- coding: utf-8 -*-
import os,sys
import paramiko
import threading
import platform
curr_ssh = none
curr_prompt = ">>"
#使用說明
def printusage():
print " !ls :list sessions."
print " !session id :connect session."
print " !conn host user password:connect host with user."
print " !exit :exit."
#連線
def conn(ip,username,passwd):
try:
ssh = paramiko.sshclient()
ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())
ssh.connect(ip,22,username,passwd,timeout=5)
print "connect to ",ip," with ",username
global curr_prompt
curr_prompt=username+"@"+ip+">>"
return ssh
except:
return none
#載入以前的連線資訊
sessions=
def loadsessions():
global sessions
try:
f = open("sessions")
sessions = f.readlines()
f.close()
except:
pass
#執行本地命令,ssh.py的命令
def exe_cmd_local(cmd):
if(cmd == "!ls"):
loadsessions()
global sessions
i=0print "sessions:"
for s in sessions:
print"[%d] %s" %(i,s)
i+=1
else:
vals = cmd.split(' ')
if(vals[0]=="!session"):
id = (int)(vals[1])
if(id可以直接ssh.py,進入主選單:
通過!conn host usrname passwd連線:
也可以ssh.py host usrname passwd,直接連線指定的客戶機。
可以通過!ls 檢視儲存的session列表:
通過!session id 直接啟動新視窗並連線:
通過!exit退出。
連線後可遠端執行shell 命令:
1)部分ssh命令無法執行;
2)介面顯示太弱,需要改進。
Python編寫的ssh客戶端 類似putty
windows下可以通過putty以ssh方式連線linux主機。但putty也有一些問題 比如沒有儲存session,亂碼等等。偶然發現python也有ssh模組,學習的同時嘗試使用python編寫乙個類似putty的ssh客戶端。python2.7 pycrypto paramiko ecdsa...
Python編寫FTP客戶端
之前寫過一篇ftp服務端的文章,這篇介紹一下客戶端吧。在使用虛擬機器的時候,由於虛擬機器工具沒安裝成功,所以我決定用ftp在主機與虛擬機器之間傳送檔案,在虛擬機器上開啟ftp服務,然後把客戶端放在主機上,當然也可以顛倒過來。服務端請參考 python實現ftp伺服器 import ftplib im...
ssh客戶端的選擇
目前主流的ssh工具有 finalshell xshell securecrt。筆者之前用securecrt和xshell,最近一直在用finalshell,securecrt介面功能較多,但是是英文版,中文版漢化不全或存bug,讓我苦惱的是輸出內容太費眼了,行間距太窄且無法調節。xshell跟se...