您好,登錄后才能下訂單哦!
paramiko介紹
paramiko是一個基于python編寫的、使用ssh協議的模塊,跟xshell和xftp功能類似,支持加密與認證,可以上傳下載和訪問服務器的文件。
可以利用paramiko模塊寫服務器腳本,在本地執行,比如持續更新代碼,查看日志,批量配置集群等。
paramiko 主要包含SSHClient和SFTPClient兩個組件:
SSHClient
ssh服務會話的表示,通常用來執行命令,主要有connect、exec_command、load_system_host_keys和set_missing_host_key_policy方法。
SFTPClient
SFTP客戶端對象,實現遠程文件操作,主要有from_transport、put、get、Mkdir、remove、rename、stat、listdir等方法。
安裝與使用
安裝
pip install paramiko
執行linux命令
import paramiko #服務器信息,主機名(IP地址)、端口號、用戶名及密碼 hostname = "xxx.xxx.xx.170" port = 11022 username = "rdadmin" password = "818" #創建SSH對象 client = paramiko.SSHClient() #自動添加策略,保存服務器的主機名和密鑰信息 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #連接服務器 client.connect(hostname, port, username, password, compress=True) # 執行linux命令 stdin, stdout, stderr = client.exec_command('ls /') for line in stdout: print('... ' + line.strip('\n')) #or print(stdout.readlines())
訪問linux上的文件
import paramiko hostname = "192.168.0.1" port = 22 username = "root" password = "root" client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname, port, username, password, compress=True) sftp_client = client.open_sftp() remote_file = sftp_client.open("/home/verified_list.txt") #文件路徑 try: for line in remote_file: print(line.strip()) finally: remote_file.close()
上傳到linux與從linux下載文件
import paramiko hostname = 192.168.0.1 port = 22 username = "root" password = "root" transport = paramiko.Transport((hostname, port)) transport.connect(username = username, password = password) sftp = paramiko.SFTPClient.from_transport(transport) # 下載文件 sftp.get("/home/share/video.mp4","./視頻文件下載/") #上傳文件 sftp.put("./video.mp4","/home/share/video.mp4") sftp.close()
與linux的交互操作
通過SSHClient的invoke_shell方法,可以創建一個交互會話的對象,和exec_command方法不同的是,這個可以實現命令交互,比如先cd到某個目錄下,再執行腳本操作,然后退出,這種需要多個步驟的操作。
import paramiko hostname = "192.168.0.1" port = 22 username = "root" password = "root" client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname, port, username, password, compress=True) channel = client.invoke_shell() # 在SSH server端創建一個交互式的shell command = "" channel.send(command + '\n') time.sleep(10) stdout = channel.recv(1024*100000) out_list = stdout.decode().split("\n") client.close()
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。