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.178linux.com/70658

赞 (0)
realmasterrealmaster
上一篇 2017-03-06 23:20
下一篇 2017-03-07 11:08

相关推荐

  • Linux 文件管理常用基本命令

    马哥教育网络班21期+第二周练习 目录管理 ls (list):列出目录及内容 ls [OPTION]… [FILE]…     -l:长格式显示文件的详细属性信息         -rwxr-xr-x.&nbs…

    Linux干货 2016-07-17
  • Linux中基础且常用的指令介绍及示例

    首先需要明确的是:Linux中无论是指令还是选项或者参数,请认真对待字母大小写。Linux中通用的命令使用方式是:命令 [选项] [参数] 1. pwd pwd:print name of current/working directory,即打印当前的目录(工作目录),光杆处于哪个目录下就会在终端上输出当前路径的绝对路径。用法示例: [lanti…

    Linux干货 2016-10-30
  • 相识–Varnish

    Varnish与一般服务器软件类似,分为master(management)进程和child(worker,主要做cache的工作)进程。master进程读入命令,进行一些初始化,然后fork并监控child进程。child进程分配若干线程进行工作,主要包括一些管理线程和很多woker线程。 VCL: ”域“专有类型的配置语言 VCL有多个状态引擎,状态之间…

    Linux干货 2017-11-13
  • 浅谈用户和组相关配置文件

    用户、组和权限的管理 Linux如何像Windows系统那样,可以不输入密码直接进入图形界面?那么如何如何自动登录图形界面呢?这就要用到编辑配置文件: nano  /etc/gdm/custom.cof  ,在里面加上   automaticLoginEnable=true automaticLogin=root 退出…

    Linux干货 2016-10-23
  • 持续交付的Mesos与Docker导入篇

    变革这个词在当今的数字化时代司空见惯,IT技术每过一段时间就会有一起革新,从WEB2.0、虚拟化、云计算、大数据、微架构、DevOps再到今天的容器Docker与Mesos。 Docker的出现方便了应用的测试、部署、与升级,其将各种应用程序和它们所依赖的运行环境打包成标准的Container/Image,进而发布到不同的平台上运行。Docker的轻量级、快…

    Linux干货 2016-07-10
  • DNS服务与bind配置

    DNS服务   DNS: Domain Name Service,协议   BIND:Bekerley Internat Name Domain, ISC (www.isc.org)   本地名称解析配置文件:hosts           linux:/et…

    Linux干货 2016-09-26