#設定ssh連線的遠端主機位址和埠
t=paramiko.transport((ip,port))
#設定登入名和密碼
t.connect(username=username,password=password)
#連線成功後開啟乙個channel
chan=t.open_session()
#設定會話超時時間
chan.settimeout(session_timeout)
#開啟遠端的terminal
chan.get_pty()
#啟用terminal
chan.invoke_shell()
然後就可以通過chan.send(『command』)和chan.recv(recv_buffer)來遠端執行命令以及本地獲取反饋。
paramiko有兩個模組sshclient()和sftpclient()
sshclient()的使用**:
import paramiko
ssh = paramiko.sshclient() # 建立ssh物件
# 允許連線不在know_hosts檔案中的主機
ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())
# 連線伺服器
ssh.connect(hostname='192.168.2.103', port=22, username='root', password='123456')
stdin, stdout, stderr = ssh.exec_command('ls') # 執行命令
result = stdout.read() # 獲取命令結果
print (str(result,encoding='utf-8'))
ssh.close() # 關閉連線
sshclient()裡有個transport變數,是用於獲取連線,我們也可單獨的獲取到transport變數,然後執行連線操作
import paramiko
transport = paramiko.transport(('192.168.2.103', 22))
transport.connect(username='root', password='123456')
ssh = paramiko.sshclient()
ssh._transport = transport
stdin, stdout, stderr = ssh.exec_command('df')
print (str(stdout.read(),encoding='utf-8'))
transport.close()
#coding:utf-8
import paramiko
import uuid
class sshconnection(object):
def __init__(self, host='192.168.2.103', port=22, username='root',pwd='123456'):
self.host = host
self.port = port
self.username = username
self.pwd = pwd
self.__k = none
def connect(self):
transport = paramiko.transport((self.host,self.port))
transport.connect(username=self.username,password=self.pwd)
self.__transport = transport
def close(self):
self.__transport.close()
def upload(self,local_path,target_path):
# 連線,上傳
# file_name = self.create_file()
sftp = paramiko.sftpclient.from_transport(self.__transport)
# 將location.py 上傳至伺服器 /tmp/test.py
sftp.put(local_path, target_path)
def download(self,remote_path,local_path):
sftp = paramiko.sftpclient.from_transport(self.__transport)
sftp.get(remote_path,local_path)
def cmd(self, command):
ssh = paramiko.sshclient()
ssh._transport = self.__transport
# 執行命令
stdin, stdout, stderr = ssh.exec_command(command)
# 獲取命令結果
result = stdout.read()
print (str(result,encoding='utf-8'))
return result
ssh = sshconnection()
ssh.connect()
ssh.cmd("ls")
ssh.upload('s1.py','/tmp/ks77.py')
ssh.download('/tmp/test.py','kkkk',)
ssh.cmd("df")
ssh.close()
Python Paramiko模組的使用
windows下有很多非常好的ssh客戶端,比如putty。在python的世界裡,你可以使用原始套接字和一些加密函式建立自己的ssh客戶端或服務端,但如果有現成的模組,為什麼還要自己實現呢。使用paramiko庫中的pycrypto能夠讓你輕鬆使用ssh2協議。paramiko的安裝方法網上有很多...
python paramiko 各種錯誤
這個錯誤出現在伺服器接受連線但是ssh守護程序沒有及時響應的情況 預設是15s 要解決這個問題,需要將paramiko的響應等待時間調長。transport.py中def init 初始化函式中 how long seconds to wait for the ssh banner self.ban...
Python paramiko模組的安裝與使用
一 安裝paramiko 1 pip3 install paramiko 二 使用使用者名稱密碼方式遠端執行命令 1 2 3 4 5 6 7 8 importparamiko ssh paramiko.sshclient ssh.set missing host key policy paramik...