文档章节

利用python的paramiko模块,自定义函数远程批量执行shell命令

Jamie-Liu
 Jamie-Liu
发布于 2016/07/19 15:14
字数 394
阅读 3430
收藏 1

    话不多说,直接上函数体 ssh.py:

--------------------------------------------------------------------------------------------------------------------------

# -*- coding: utf-8 -*-
import paramiko

def python_ssh(hostname,username,password,**shell):
    try:
        s = paramiko.SSHClient()
        s.set_missing_host_key_policy(paramiko.AutoAddPolicy())   # 用于允许连接不在known_hosts名单中的主机
        s.connect(hostname = hostname,username = username,password = password)
        result = {}
        for key in shell:
            stdin,stdout,stderr = s.exec_command(shell[key])
            result[key] = stdout.read(),stderr.read()
        s.close()
        return result
    except:
        result = u"无"
        return result

---------------------------------------------------------------------------------------------------------------------------

    函数写完了,下面就试试效果:

    首先从ssh.py中把python_ssh函数导入,然后调用python_ssh函数即可。调用格式为:

    python_ssh('hostname','username','password',SHELL1='free',SHELL2='df -h',SHELL3='ls')

    其中,hostname是远程主机的IP地址,username是登录主机的用户名,password是用户密码,SHELL1、SHELL2和SHELL3表示自定义的shell命令变量名,之所以用大写,是因为一般大写表示变量,当然你也可以用小写,这里把shell命令赋值给自定义变量的目的是为了存到字典中时,将变量名作为keys,shell命令执行的结果作为values,方便后续调用。

© 著作权归作者所有

Jamie-Liu
粉丝 3
博文 21
码字总数 13573
作品 0
宜昌
私信 提问
linux安装python常用的软件包和模块安装

一、安装软件pip yum -y install epel-release yum install python-pip pip install --upgrade pip 二、安装paramiko模块 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认...

漫然
2018/07/12
0
0
python 利用paramiko批量管理功能示例

paramiko是基于python实现的ssh2远程安全连接,支持秘钥认证,实现远程命令执行,文件传输,中间ssh代理等功能 安装paramiko paramiko依赖第三方的crypto,ecdsa,python-devel yum install ...

super李导
2018/05/23
0
0
Python编写的ssh客户端[类似putty]

转载请注明出处:http://blog.csdn.net/jmppok/article/details/17588381 windows下可以通过putty以ssh方式连接linux主机。但putty也有一些问题:比如没有保存session,乱码等等。 偶然发现P...

jmppok
2015/03/25
355
0
Python RPC 远程调用脚本之 RPyC 实践

最近有个监控需求,需要远程执行集群每个节点上的脚本,并获取脚本执行结果,为了安全起见不需要账号密码登陆节点主机,要求只需要调用远程脚本模块的方法就能实现。 总结下python进行远程调...

大数据之路
2015/06/28
5.4K
0
Ansible自动化运维工具介绍

介绍 Ansible自动化运维工具,是基于Python开发的,可以实现批量系统配置,批量程序部署、批量运行命令等等。 ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansib...

程小白0302
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 文件类操作API与IO编程基础知识

阅读目录: https://www.w3cschool.cn/java/java-io-file.html Java 文件 Java 文件 Java 文件操作 Java 输入流 Java 输入流 Java 文件输入流 Java 缓冲输入流 Java 推回输入流 Java 数据输入...

boonya
28分钟前
3
0
SDKMAN推荐一个好

是在大多数基于Unix的系统上管理多个软件开发工具包的并行版本的工具。它提供了一个方便的命令行界面(CLI)和API来安装,切换,删除和列出sdk相关信息。以下是一些特性: By Developers, fo...

hotsmile
53分钟前
8
0
什么是 HDFS

是什么? HDFS 是基于 Java 的分布式文件系统,允许您在 Hadoop 集群中的多个节点上存储大量数据。 起源: 单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称...

Garphy
56分钟前
5
0
一起来学Java8(四)——复合Lambda

在一起来学Java8(二)——Lambda表达式中我们学习了Lambda表达式的基本用法,现在来了解下复合Lambda。 Lambda表达式的的书写离不开函数式接口,复合Lambda的意思是在使用Lambda表达式实现函...

猿敲月下码
今天
11
0
debian10使用putty配置交换机console口

前言:Linux的推广普及,需要配合解决实际应用方能有成效! 最近强迫自己用linux进行实际工作,过程很痛苦,还好通过网络一一解决,感谢各位无私网友博客的帮助! 系统:debian10 桌面:xfc...

W_Lu
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部