paramiko 遠程控制模塊python
paramiko是一個用於作遠程控制的模塊,使用該模塊能夠對遠程服務器進行命令或文件操做,fabric和ansible內部的遠程管理就是使用的paramiko來現實。服務器
1. 下載安裝ssh
# pycrypto,因爲 paramiko 模塊內部依賴pycrypto,因此先下載安裝pycryptoide
# 下載安裝 pycryptoui
wget http://files.cnblogs.com/files/wupeiqi/pycrypto-2.6.1.tar.gzspa
tar -xvf pycrypto-2.6.1.tar.gzblog
cd pycrypto-2.6.1get
python setup.py buildit
python setup.py installclass
# 進入python環境,導入Crypto檢查是否安裝成功
# 下載安裝 paramiko
wget http://files.cnblogs.com/files/wupeiqi/paramiko-1.10.1.tar.gz
tar -xvf paramiko-1.10.1.tar.gz
cd paramiko-1.10.1
python setup.py build
python setup.py install
# 進入python環境,導入paramiko檢查是否安裝成功
2. 使用模塊
1)執行命令 - 經過用戶名和密碼鏈接服務器
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.108', 22, '用戶名', '密碼')
stdin, stdout, stderr = ssh.exec_command('df')
print stdout.read()
ssh.close();
2)執行命令 - 過密鑰連接服務器
import paramiko
private_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(private_key_path)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('主機名 ', 端口, '用戶名', key)
stdin, stdout, stderr = ssh.exec_command('df')
print stdout.read()
ssh.close()
3)上傳或者下載文件 - 經過用戶名和密碼
import os,sys
import paramiko
conn = paramiko.Transport(('192.168.20.21',22))
conn.connect(username='用戶名',password='密碼')
sftp = paramiko.SFTPClient.from_transport(conn)
sftp.put('/tmp/test.py','/tmp/test.py')
conn.close()
import os,sys
import paramiko
conn = paramiko.Transport(('192.168.20.21',22))
conn.connect(username='用戶名',password='密碼')
conn = paramiko.SFTPClient.from_transport(conn)
sftp.get('/tmp/test.py','/tmp/test2.py')
conn.close()
4)上傳或下載文件 - 經過密鑰
import paramiko
pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
conn = paramiko.Transport(('192.168.20.21',22))
conn.connect(username='用戶名',pkey=key)
sftp = paramiko.SFTPClient.from_transport(conn)
sftp.put('/tmp/test3.py','/tmp/test3.py')
conn.close()
import paramiko
pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
conn = paramiko.Transport(('192.168.20.21',22))
conn.connect(username='用戶名',pkey=key)
sftp = paramiko.SFTPClient.from_transport(conn)
sftp.get('/tmp/test3.py','/tmp/test4.py')
conn.close()