paramiko 模塊安裝和使用


一、Centos安裝Paramiko

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 密碼:y2ml
tar 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/目錄找

 二、Paramiko的使用:

1、基於賬號密碼的登錄:

import paramiko
#創建SSH對象
ssh = paramiko.SSHClient()
#允許不在know_host文件中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#連接服務器
ssh.connect(hostname='192.168.71.3',port=22,username='root',password='zedata')
#獲取命令結果
stdin,stdout,stderr = ssh.exec_command('df -h')
print(stdout.read().decode())  #輸出結果
print(stderr.read().decode())  #輸出錯誤結果
ssh.close()

2、基於公鑰的連接:

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.71.2', port=22, username='root', pkey=private_key)   #注若遇到TypeError: connect() got an unexpected keyword argument 'key' 這個錯誤,將key改為pkey。
# 執行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 獲取命令結果
print(stdout.read().decode())
# 關閉連接
ssh.close()

3、基於用戶名密碼上傳下載

import paramiko
 
transport = paramiko.Transport(('192.168.71.3',22))
transport.connect(username='root',password='123')
 
sftp = paramiko.SFTPClient.from_transport(transport)
# 將location.py 上傳至服務器 /tmp/test.py
sftp.put('/tmp/location.py', '/tmp/test.py')
# 將remove_path 下載到本地 local_path
sftp.get('remove_path', 'local_path')
 
transport.close()

4、基於公鑰密鑰上傳下載

import paramiko
 
private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')
 
transport = paramiko.Transport(('192.168.71.3', 22))
transport.connect(username='root', pkey=private_key )
 
sftp = paramiko.SFTPClient.from_transport(transport)
# 將location.py 上傳至服務器 /tmp/test.py
sftp.put('/tmp/location.py', '/tmp/test.py')
# 將remove_path 下載到本地 local_path
sftp.get('remove_path', 'local_path')
 
transport.close()

 Paramiko升級(Centos):

注:有時候paramiko的版本低會出現這個報錯:paramiko.SSHException: Incompatible ssh peer (no acceptable kex algorithm)

pip install --upgrade pip
pip install paramiko --upgrade

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM