Python 利用pexpect和paramiko模块进行远程服务器的监控

2023-11-12

一 模块的安装

安装pexpect模块

pip install pexpect

安装paramiko模块

yum install python-devel
pip install paramiko

注意:如果不安装python-devel,则会报 error: command ‘gcc’ failed with exit status 1;这是因为缺少python-dev的软件包

二 代码示例

pexpect代码示例

#!/usr/bin/python
# encoding=utf-8
# Filename: pexpect_test.py
import pexpect
def sshCmd(ip, passwd, cmd):
    ret = -1
    ssh = pexpect.spawn('ssh root@%s "%s"' % (ip, cmd))
    try:
        i = ssh.expect(['password:', 'continue connecting(yes/no)?'], timeout=5)
        if i == 0:
            ssh.sendline(passwd)
        elif i == 1:
            ssh.sendline('yes\n')
            ssh.expect('password:')
            ssh.sendline(passwd)
        ssh.sendline(cmd)
        r = ssh.read()
        print r
        ret = 0
    except pexpect.EOF:
        print "EOF"
        ret = -1
    except pexpect.TIMEOUT:
        print "TIMEOUT"
        ret = -2
    finally:
        ssh.close()
    return ret

sshCmd('xxx.xxx.xxx.xxx','xxxxxx','ls /root')

paramiko代码示例
注意:必须要增加client.load_system_host_keys()此句,否则报如下错误:

unbound method missing_host_key() must be called with AutoAddPolicy instance as first argument (got SSHClient instance instead)

#!/usr/bin/python
# encoding=utf-8
# Filename: paramiko_test.py
import datetime
import threading
import paramiko

def sshCmd(ip, username, passwd, cmds):
    try:
        client = paramiko.SSHClient()
        client.load_system_host_keys()
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
        client.connect(ip, 22, username, passwd, timeout=5)
        for cmd in cmds:
            stdin, stdout, stderr = client.exec_command(cmd)
            lines = stdout.readlines()
            # print out
            for line in lines:
                print line,
        print '%s\t 运行完毕\r\n' % (ip)
    except Exception, e:
        print '%s\t 运行失败,失败原因\r\n%s' % (ip, e)
    finally:
        client.close()

#上传文件       
def uploadFile(ip,username,passwd):
    try:
        t=paramiko.Transport((ip,22))
        t.connect(username=username,password=passwd)
        sftp=paramiko.SFTPClient.from_transport(t)
        remotepath='/root/main.py'
        localpath='/home/data/javawork/pythontest/src/main.py'
        sftp.put(localpath,remotepath)
        print '上传文件成功'
    except Exception, e:
        print '%s\t 运行失败,失败原因\r\n%s' % (ip, e)
    finally:
        t.close()

#下载文件 
def downloadFile(ip,username,passwd):
    try:
        t=paramiko.Transport((ip,22))
        t.connect(username=username,password=passwd)
        sftp=paramiko.SFTPClient.from_transport(t)
        remotepath='/root/storm-0.9.0.1.zip'
        localpath='/home/data/javawork/pythontest/storm.zip'
        sftp.get(remotepath,localpath)
        print '下载文件成功'
    except Exception, e:
        print '%s\t 运行失败,失败原因\r\n%s' % (ip, e)
    finally:
        t.close()  
        
if __name__ == '__main__':
    # 需要执行的命令列表
    cmds = ['ls /root', 'ifconfig']
    # 需要进行远程监控的服务器列表
    servers = ['xxx.xxx.xxx.xxx']
     
    username = "root"
    passwd = "xxxxxx"
    threads = []
    print "程序开始运行%s" % datetime.datetime.now()
    # 每一台服务器创建一个线程处理
    for server in servers:
        th = threading.Thread(target=sshCmd, args=(server, username, passwd, cmds))
        th.start()
        threads.append(th)
         
    # 等待线程运行完毕
    for th in threads:
        th.join()
         
    print "程序结束运行%s" % datetime.datetime.now()
    
    #测试文件的上传与下载
    uploadFile(servers[0],username,passwd)
    downloadFile(servers[0],username,passwd)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 利用pexpect和paramiko模块进行远程服务器的监控 的相关文章

随机推荐

  • Python写简单的拼图小游戏(附源码、资源)

    郑重声明 嘿嘿 代码与图片已上传资源 需要者自取 资源地址 https download csdn net download qq 44651842 20009562 Python小白一只 正在成长 程序自己设计 很多不足 算法很多地方能优
  • Java语言与面向对象的程序设计

    这几天很迷茫 听老师介绍了一款软件 中国大学MOOC 刚好我是软件专业的学生 索性听了北京大学老师的一节关于Java的讲课 果断被震撼到了 他们的讲课给人一种很深刻 深入 的感觉 我今天就把老师讲到的东西记了下来 以便于有兴趣的朋友阅读 J
  • Qt快速入门学习笔记(画图篇)

    1 Qt中提供了强大的2D绘图系统 可以使用相同的API在屏幕和绘图设备上进行绘制 它主要基于QPainter QPaintDevice和QPaintEngine这三个类 其中QPainter用来执行绘图操作 QPaintDevice提供绘
  • java开发利用jacob将word转pdf

    jacob 缺点 需要 window 环境 而且速度是最慢的需要安装 msofficeWord 以及 SaveAsPDFandXPS exe word 的一个插件 用来把 word 转化为 pdf 开发流程 SaveAsPDFandXPS
  • STM32驱动BH1750模块

    模块描述 BH1750FVI是一款用于I2C总线接口的数字环境光传感器IC 该集成电路最适合获取环境光数据 用于调整手机的 LCD和键盘背光功率 可以在高分辨率下检测宽范围 1 65535 lx 引脚说明 VCC 5V GND GND SC
  • Tomcat-JDBC源码解析及优化

    数据库连接池 连接池是常见的一种资源复用的技术 利用连接池 可以将那些创建开销较大的资源汇聚到一个池子里缓存起来 需要使用的时候只需要从连接池里取出来就可以了 中间省去了频繁的创建和销毁的过程 数据库连接池就是其中的典型应用 深入Tomca
  • jmeter分布式测试配置

    分机配置 1 执行配置文件 bin jmeter properties 文件 2 配置远程端口号 jmeter默认端口号1099 可以不进行配置 3 设置远程执行模式 设置配置文件 mode Standard前面的 注释去掉 server
  • HTML5元素周期表

    http www 52html5 com manual html5 Elements Table
  • chatGPT 学习分享:内含PPT分享下载

    InstructGPT论文地址 Training language models to follow instructions with human feedback chatGPT地址 openAI 个人整理的PPT 可编辑 下载地址 c
  • 光遇自动弹琴脚本代码_刚入门测试?那你就不得不看一下!一行代码解决问题...

    对于刚开始做自动化测试的新手同学来说 我们还是非常建议大家通过IDE提供的设备窗口去连接测试设备的 这样不仅可以非常直观地看到设备的画面 还可以在运行脚本时 自动帮大家生成带连接设备参数的运行命令 减少很多不必要的错误 当然 很多同学也会有
  • nodejs+npm的安装与配置

    目录 下载与安装 下载 安装 配置 nodejs相关配置 npm相关配置 nodejs的基本使用 搭建简易后端服务器 npm的基本使用 搭建vue 2 0开发环境 下载与安装 下载 点击 Node js中文网 根据自身系统进行下载即可 建议
  • 打不出电话显示无法连接到服务器,打电话显示无法连接到服务器

    打电话显示无法连接到服务器 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 有以下几种现象 将制作好的SD卡插入开发者板并
  • mysql数据库用户控制权限

    grant all on dbname tablename to newuser identified by newuser123 拥有所有权限 grant select on dbname tablename to newuser ide
  • 使用HAL库开发STM32:GPIO口基础使用与外部中断

    文章目录 目的 GPIO口基础使用 基础说明 初始化设置 输出与控制 读取端口值 GPIO口与外部中断 总结 目的 对于MCU来说GPIO口的使用是最基础的内容 仅使用GPIO口和延时等 就可以完成很多功能了 GPIO口基础使用 基础说明
  • 报错‘function’object has no attribute‘XXXX’

    报错原因 可能是方法后面没有加 train x为dataframe train X train x to numpy train X train X reshape train X shape 0 train X shape 1 1 运行结
  • CNN目标检测(三):SSD详解

    SSD github https github com weiliu89 caffe tree ssd SSD paper https arxiv org abs 1512 02325 SSD eccv2016 slide pdf http
  • ShareSDK各社交平台申请APPkey 的网址及申请流程汇总

    http bbs mob com thread 275 1 1 html 平台 开放平台地址 APPkey 申请流程 新浪微博 http open weibo com http bbs mob com thread 89 1 4 html
  • 提示由于找不到MSVCR120.dll文件,怎么修复呢?MSVCR120.dll是什么文件?

    打开游戏或者软件的时候 电脑提示由于找不到MSVCR120 dll文件 无法执行此代码是原因呢 其实就是电脑系统中的MSVCR120 dll文件丢失或者损坏了 MSVCR120 dll文件可以帮助系统运行一些需要Microsoft Visu
  • 08年上最新各大IT公司薪水行情(硕士)

    08年最新各大IT公司薪水行情 最近终于把自己给卖了 这几个月来自己陆陆续续的面试的有30多家公司 主要是IT公司 准备把今年我所知道的IT公司的待遇薪水总结一下 这里面包括我自己找工作所知道的 我们系的其他同学已经拿到的offer 还有几
  • Python 利用pexpect和paramiko模块进行远程服务器的监控

    一 模块的安装 安装pexpect模块 pip install pexpect 安装paramiko模块 yum install python devel pip install paramiko 注意 如果不安装python devel