python使用paramiko 模塊建立ssh通訊

一 paramiko簡介

下文是我從別人博客那里copy下來的:

paramiko是用python語言寫的一個模塊,遵循SSH2協議,支持以加密和認證的方式,進行遠程服務器的連接。

由于使用的是python這樣的能夠跨平臺運行的語言,所以所有python支持的平臺,如Linux, Solaris, BSD, MacOS
X, Windows等,paramiko都可以支持,因此,如果需要使用SSH從一個平臺連接到另外一個平臺,進行一系列的操作時,paramiko是最佳工具之一。

簡單來說,paramiko就是用來建立ssh通訊的。

二 安裝paramiko

一開始我使用linuxmint的軟件源安裝的,之后的程序出現了傳參數錯誤,事實證明這是個大坑,必須要通過編譯的方式安裝。

1、paramiko的下載地址是https://github.com/paramiko/paramiko/releases,下載最新版本

2、用sudo apt-get –purge remove python-paramiko徹底清除舊版本的paramiko,沒安裝過舊版的童鞋跳過此步驟

3、進入解壓好的paramiko路徑并使用sudo python setup.py install來安裝paramiko

三 paramiko的使用方法

client = SSHClient() #創建ssh客戶端對象
client.load_system_host_keys() #從系統文件里加載密鑰
client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #設置沒有密鑰
client.connect('ssh.example.com') #連接到指定服務器
stdin, stdout, stderr = client.exec_command('ls -l') #執行命令

四 簡單的ssh通訊腳本

#!/usr/bin/env python

import paramiko
import sys,os

host = sys.argv[1]
user = 'root'
password = 'XXXXXX'

cmd=sys.argv[2]

s=paramiko.SSHClient()
s.load_system_host_keys()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())

s.connect(host,22,user,password,timeout=5)
stdin,stdout,stderr = s.exec_command(cmd)

cmd_result = stdout.read(),stderr.read()

for line in cmd_result:
    print line

s.close()

五 執行腳本

$ python ssh.py 172.18.55.2 df
Filesystem     1K-blocks      Used Available Use% Mounted on
udev             1956012         0   1956012   0% /dev
tmpfs             395484      6612    388872   2% /run
/dev/sda2       19091584  10027836   8070880  56% /
tmpfs            1977412     42968   1934444   3% /dev/shm
tmpfs               5120         4      5116   1% /run/lock
tmpfs            1977412         0   1977412   0% /sys/fs/cgroup
tmpfs             262144     16240    245904   7% /tmp
/dev/sda1       94371836  46849248  47522588  50% /media/sda1
/dev/sdb1      976759804 837472068 139287736  86% /media/STORE
cgmfs                100         0       100   0% /run/cgmanager/fs
tmpfs             395484        56    395428   1% /run/user/1000
tmpfs             395484         4    395480   1% /run/user/0


原創文章,作者:realmaster,如若轉載,請注明出處:http://www.www58058.com/70658

(0)
realmasterrealmaster
上一篇 2017-03-06
下一篇 2017-03-07

相關推薦

  • 刪除boot,同時刪除/etc/fstab,如何恢復

    刪除boot,同時刪除/etc/fstab,如何恢復 /etc/fstab文件丟失的時候,得光盤啟動進入linux rescue下。 掛載好cdrom后,按ctrl+alt+del,然后按f2,進入bios,調整為cdrom啟動,然后reboot,進入linux?rescue急救模式/etc/fstab配置文件決定了linux系統在啟動后如何加載各個分區,如…

    2017-09-23
  • 第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限  cp -r /etc/skel  /home/tuser1   chmod 700 /home/tuser1 2、編輯/etc/gro…

    Linux干貨 2016-12-27
  • Linux如何進行分區和目錄管理

    第七周作業   1、創建一個10G分區,并格式為ext4文件系統: 1、要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包括acl; ~]# mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1 2、掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,縣不更新…

    2017-09-18
  • centos 6 配置bind

    BIND BIND(Berkeley Internet Name Daemon)是現今互聯網上最常使用的DNS服務器軟件,使用BIND作為服務器軟件的DNS服務器約占所有DNS服務器的九成[。BIND現在由互聯網系統協會(Internet Systems Consortium)負責開發與維護。 DNS是什么 DNS(Domain…

    Linux干貨 2016-12-19
  • iptables實戰筆記一

    iptables實戰 1.開啟防火墻 systemctl start firewalld 2.清空所有的默認規則,我們自己定義自己的規則 iptables -F 查看此時的iptables iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination Chain FOR…

    Linux干貨 2017-06-13
  • linux學習第二天知識點-linux入門及使用幫助

    一 基礎命令 1. #ifconfig     顯示或配置網卡的命令,英文全稱是network interfaces configuring。     配置網卡的IP地址語法例:ifconfig eth0 192.168.0.1 netmask 255.255.255.0 2.&…

    Linux干貨 2016-07-26
欧美性久久久久