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
下一篇 2017-03-07

相关推荐

  • Homework Week-14 iptables及tcpwraper访问控制

    系统的INPUT和OUTPUT默认策略为DROP; 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机; iptables -A INPUT -d 192.168.1.101 -p …

    Linux干货 2016-12-05
  • centos7编译安装zabbix

    centos7源码编译安装zabbix3 centos7源码编译安装zabbix3 centos7源码编译安装zabbix3 系统配置和必要的安装包 编译安装nginx 编译安装php 安装MariaDB 安装JDK 安装Zabbix3.0 前戏准备 开始编译 开始安装 zabbix虚拟主机创建 前戏准备 开始编译 开始安装 php配置 前戏准备 开始编译 …

    Linux干货 2016-11-25
  • Linux磁盘及文件系统管理

    磁盘(Hard Disk Drive,简称HDD)是一种存储介质,传统的机械硬盘由一个或多个铝制或玻璃制的碟片组成,碟片外覆盖有铁磁性材料。 磁盘的物理结构一般由磁头与碟片、电动机、主控芯片与排线等部件组成;当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁头悬浮在碟面上画出一个与碟片同心的圆形轨道(磁轨或称柱…

    Linux干货 2015-04-20
  • btrfs 文件系统

    简介   Btrfs((B-tree,ButterFS ,Better FS通常念成Butter FS),由Oracle于2007年宣布并进行中的COW(copy-on-write式)文件系统。继ext3/4文件系统之后linux又有了比较强大的文件系统(btrfs文件系统),btrfs文件系统不仅可以将ex…

    Linux干货 2016-02-19
  • 马哥教育网络班22期+第3周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。    [test2@localhost ~]$ who |cut -d " " -f1|sort -u   &nbsp…

    Linux干货 2016-08-30
  • N23-第一周博客作业

    一、计算机组成 由五大基本部件【运算器 + 控制器 + 储存器 + 输入设备 + 输出设备】组成且遵循冯诺依曼体系,CPU包含运算器和控制器两大部件。 CPU: 核心部件:运算器、控制器 其他部件:寄存器、缓存、等等 存储器:内存,RAM(Random Access Memory)随机访问存储器。 Input(输入设备):下指令,提供数据等,如:硬盘、键盘、…

    Linux干货 2016-09-15