python paramiko模塊

paramiko模塊能實現Linux的ssh功能


1、實現一個簡單的ssh,登錄到其它服務器執行一條命令


import paramiko    #導入模塊,前提是用pip安裝過

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())   #允許將信任的主機自動加入到host_allow 列表,此方法必須放在connect方法的前面

ssh.connect(hostname='192.168.200.102', port=22, username='root', password='666666')#連接服務器

stdin, stdout, stderr = ssh.exec_command('hostname')#stdin標準輸入,stdout標準輸出,stderr標準錯誤

res,err = stdout.read(),stderr.read()  

result = res if res else err     #三元遠算

print(result.decode().strip())

ssh.close()


2、以上的示例是實現在服務器執行命令,接下來的示例是傳遞文件,也就是實現scp功能

import paramiko

transport = paramiko.Transport(("192.168.200.102",22))

transport.connect(username="root",password="666666")

sftp = paramiko.SFTPClient.from_transport(transport)

sftp.put("/etc/passwd","/tmp/passwd.bak")

sftp.get("/tmp/passwd.bak","/tmp/passwd.bak")

transport.close()


3、基於祕鑰的連接,前提是生成密鑰對

import paramiko

#指定本地的私鑰

private_key = paramiko.RSAKey.from_private_key_file("/root/.ssh/id_rsa")

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(hostname="192.168.200.102",port=22,username="root",pkey=private_key)

stdin,stdout,stderr = ssh.exec_command("free -m")

print(stdout.read().decode())

ssh.close()


4、基於祕鑰的傳輸文件

import paramiko

private_key = paramiko.RSAKey.from_private_key_file("/root/.ssh/id_rsa")

transport = paramiko.Transport(("192.168.200.102",22))

transport.connect(username="root",pkey=private_key)

sftp = paramiko.SFTPClient.from_transport(transport)

sftp.put("/etc/passwd","/tmp/passwd.baak")

sftp.get("/tmp/passwd.baak","/tmp/passwd.baak")

transport.close()


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章