審計系統---paramiko模塊學習

paramiko模塊學習

【更多參考】http://www.cnblogs.com/wupeiqi/articles/4963027.html html

【paramiko的Demo實例】https://github.com/paramiko/paramiko python

image_thumb[4]

Paramiko模塊學習:git

paramiko是一個用於作遠程控制的模塊,使用該模塊能夠對遠程服務器進行命令或文件操做,值得一說的是,fabric和ansible內部的遠程管理就是使用的paramiko來現實。 github

paramiko 遵循SSH2協議,支持以加密和認證的方式,進行遠程服務器的鏈接,能夠實現遠程文件的上傳,下載或經過ssh遠程執行命令 sql

簡單講:ssh使用C實現的遠程鏈接,Paramiko是用Python實現的原創鏈接安全

paramiko安裝

Linux下安裝 服務器

安裝一:安裝源安裝多線程

sudo pip3 install paramiko
或
sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple paramiko

image_thumb[5]

安裝二:源碼安裝ssh

# pycrypto,因爲 paramiko 模塊內部依賴pycrypto,因此先下載安裝pycrypto
# 下載安裝 pycrypto
wget http://files.cnblogs.com/files/wupeiqi/pycrypto-2.6.1.tar.gz
tar -xvf pycrypto-2.6.1.tar.gz
cd pycrypto-2.6.1
python3 setup.py build
python3 setup.py build
python3 setup.py install
sudo python3 setup.py install
omc@omc-virtual-machine:~/Celery/pycrypto-2.6.1$ python3
>>> import Crypto
>>>

image_thumb[6]

# 下載安裝 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
sudo python3 setup.py build
sudo python3 setup.py install  # 進入python環境,導入paramiko檢查是否安裝成功

image_thumb[7]

Win7下的安裝:學習

pip3 install paramiko

image_thumb[8]

記錄一次Linux下安裝事故:

201800501安裝Paramiko安裝了一下午,心情特別長,不少的包有問題,第一次報錯缺乏

問題現象: fatal error: openssl/opensslv.h: No such file or directory

image_thumb[9]

問題現象: Failed building wheel for cryptography

image_thumb[10]

問題現象: src/MD2.c:31:20: fatal error: Python.h: No such file or directory

image_thumb[11]

問題現象:warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.

image_thumb[12]

問題最後的解決: 期間也安裝了好多的應用包吧,可是均可以百度處理,不作贅述

root@omc-virtual-machine:#  cd usr/local/lib/python3.5/dist-packages
root@omc-virtual-machine:#  ll paramiko*

image_thumb[13]

root@omc-virtual-machine:#  mv paramiko-1.10.1-py3.5.egg paramiko-1.10.1-py3.5.egg.bal
root@omc-virtual-machine:#  sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple paramiko

image_thumb[14]

安裝好之後的目錄結果:

image_thumb[15]

另: 心累,真的心累,不知道什麼緣由,安裝了一下午,整我的很奔潰的樣子,原本計劃完成堡壘機的任務的,沒想到出師不利,第一步的paramiko安裝都有問題,關鍵是網上給的答案也是莫名其妙,找不到根本的解決方法。嚴重阻擋了51計劃。最後仍是試着才安裝上去的,簡直了...

加油

Paramilko的基本使用

Paramilko的基本使用:

1. 執行命令-經過用戶名和密碼鏈接服務器

2. 執行命令 - 過密鑰連接服務器

3. 上傳或者下載文件 - 經過用戶名和密碼

4. 上傳或下載文件 - 經過密鑰

執行命令-經過用戶名和密碼鏈接服務器

             可用於多線程下,從IP列表中讀取文件,傳入IP參數進行多機器同時執行任務的效果

#!/usr/bin/env python
#coding:utf-8

import paramiko

ssh = paramiko.SSHClient()
# 相似於ssh第一次鏈接主機的時候自動幫咱們輸入yes的功能
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# paramiko幫咱們自動建立主機配置
ssh.connect('192.168.2.105', 22, 'omc', 'FTL666@HHH')
stdin, stdout, stderr = ssh.exec_command('ifconfig')
print(stdout.read().decode("utf-8"))  # 進行utf-8編碼,不然輸出的是byte字節形式的二級制格式
ssh.close()

image

執行命令 - 過密鑰連接服務器

#!/usr/bin/env python
#coding:utf-8
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().decode("utf-8"))
ssh.close()

上傳或者下載文件 - 經過用戶名和密碼

          原理就是利用ssh自帶的sftp安全傳輸文件協議完成

上傳文件:
#!/usr/bin/env python
#coding:utf-8
# 上傳文件
import os,sys
import paramiko
# t就是傳輸文件的一個實例
t = paramiko.Transport(('192.168.2.105', 22))  # 這裏利用transport進行文件傳輸
t.connect(username='omc', password='FTL666@HHH')  # 用戶名密碼登陸
sftp = paramiko.SFTPClient.from_transport(t)  # 基於ssh建立一個sftp實例
sftp.put('D://paramkilo實例.txt', '/tmp/test_OMC.py')
t.close()

image

下載文件:
# 下載文件
#!/usr/bin/env python
#coding:utf-8
import os,sys
import paramiko
t = paramiko.Transport(('192.168.2.105', 22))  # 這裏利用transport進行文件傳輸
t.connect(username='omc', password='FTL666@HHH')  # 用戶名密碼登陸
sftp = paramiko.SFTPClient.from_transport(t)  # 基於ssh建立一個sftp實例
sftp.get('/tmp/test_OMC.py', 'F://test_OMC.py')
t.close()

image

上傳或下載文件 - 經過密鑰

      原理就是把ssh的密鑰傳遞到服務器後免密登陸使用

上傳文件 -經過密鑰
# 上傳文件-經過密鑰
#!/usr/bin/env python
#coding:utf-8
import paramiko
pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='omc', pkey="FTL666@HHH")
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test3.py','/tmp/test3.py') 
t.close()
下載文件 -經過密鑰
# 下載文件-經過密鑰
#!/usr/bin/env python
#coding:utf-8
import paramiko
pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='omc', pkey="FTL666@HHH")
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test3.py','/tmp/test4.py') 
t.close()
相關文章
相關標籤/搜索