1、安裝組件
yum install openssl openssl-devel python-dev pycrypto -y
yum install zlib-devel zlib (必須安裝,不安裝會報錯)
安裝zlib-devel需要對python3.5進行重新編譯安裝:
cd /usr/local/src/Python-3.5.1
./configure
make & make install
2、安裝setuptools-19.6:
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
tar -zxvf setuptools-19.6.tar.gz
cd setuptools-19.6
python3 setup.py build
python3 setup.py install
3、安裝paramiko
下載:http://pan.baidu.com/s/1dFKYNq5 密碼:y2mltar zxvf paramiko-1.14.0.tar.gz
cd paramiko-1.14.0
python3 setup.py build
sudo python3 setup.py install
4、報這個錯的話:
ImportError: No module named 'cryptography'
安裝cryptography:
pip3 install cryptography
沒有pip3的話在usr/local/Python3.5.1/bin/目錄找
ssh功能
#ssh功能
import paramiko
#創建ssh對象
ssh=paramiko.SSHClient()
#允許連接不在know_hosts文件中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#連接服務器
ssh.connect(hostname='localhost',port=22,username='root',password='123456')
#執行命令
cmd=input("請輸入命令:").strip()
stdin,stdout,stderr=ssh.exec_command(cmd) #stdin標準輸入,輸入命令 stdout標準輸出 stderr輸出錯誤 只能輸出一種
#獲取執行命令結果
result=stdout.read()
err=stderr.read()
print(result.decode())
print(err.decode())
#關閉連接
ssh.close()
ftp功能
import paramiko
#建立通道實例
transport=paramiko.Transport(('192.168.0.6',22))
transport.connect(username="root",password='123456')
#創建sftp實例
sftp=paramiko.SFTPClient.from_transport(transport)
#將本地文件location.py傳給服務器test.py
sftp.put('/tmp/location.py','/root/test.py')
#將remove_path下載到本地local_path
sftp.get('/tmp/remove_path','/root/local_path')
transport.close()
ssh功能基於公鑰
import paramiko
private_key=paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa') ##私鑰路徑
#創建ssh對象
ssh=paramiko.SSHClient()
#允許連接不在know_hosts文件中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#連接服務器
ssh.connect(hostname='192.168.0.6',port=22,username='root',pkey=private_key)
#執行命令
cmd=input("請輸入命令:")
stdin,stdout,stderr=ssh.exec_command(cmd) #stdin標準輸入,輸入命令 stdout標準輸出 stderr輸出錯誤 只能輸出一種
#獲取執行命令結果
result=stdout.read()
err=stderr.read()
print(result.decode())
print(err.decode())
#關閉連接
ssh.close()
ftp基於公鑰
import paramiko
private_key=paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa') #私鑰路徑
#建立通道實例
transport=paramiko.Transport(("192.168.0.6",22))
transport.connect(username="root",pkey=private_key)
#創建sftp實例
sftp=paramiko.SFTPClient.from_transport(transport)
#將本地文件location.py傳給服務器test.py
sftp.put('/tmp/location.py','/root/test.py')
#將remove_path下載到本地local_path
sftp.get('/tmp/remove_path','/root/local_path')
transport.close()