博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python通过ssh连接服务器并执行命令
阅读量:6633 次
发布时间:2019-06-25

本文共 1539 字,大约阅读时间需要 5 分钟。

[本文出自天外归云的博客园]

脚本示例如下:

# coding:utf-8import time,paramiko,re,StringIOdef exec_shell(command):    '''        command:传入的要执行的shell命令    '''    f = StringIO.StringIO()    header_match = '(\[.+?@.+?\s.+?\]\$)'    ssh.send(command+'\n')    while True:        out = ssh.recv(1024)        print out,        f.write(out)        header_list = re.findall(header_match, out)        if header_list and out.strip().endswith(header_list[-1]):            break    return fdef check_ip(content):    '''        从content中取出所有符合xx.120.xx.xx格式的ip地址(xx代表任意多数字)并返回    '''    ips = re.findall('\d+\.120\.\d+\.\d+',content)    return ipsif __name__ == '__main__':    '''        host:对应要连接的服务器ip        port:对应连接服务器的端口        username:对应访问服务器的用户名    '''    host = '10.120.143.70'    port = 8822    username = 'bjlantianyou'    '''        key_file为secureCRT对应的OpenSSH格式的私钥文件        可以在secureCRT的'Tools->Convert Private Key to OpenSSH Format...'选择相应的私钥文件转化为OpenSSH格式        例如:在Windows下保存到'E:\keys\'路径下,保存文件名为'id_rsa'    '''    key_file = 'E:\\keys\\id_rsa'    key = paramiko.RSAKey.from_private_key_file(key_file)    s = paramiko.SSHClient()    s.load_system_host_keys()    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())    s.connect(host, port, username, pkey=key)    ssh = s.invoke_shell()    '''        下面对应在secureCRT上执行命令的过程    '''    exec_shell('cd /home/project/api.winyyg.com')    out = exec_shell('ls')    ips = check_ip(out.getvalue())    exec_shell('cat '+ips[0]+'/log/duobao.log')

注意:缓冲区为空的情况下,ssh.recv(1024)会hang住。

可以进一步利用这个方法做一个自动化过滤log的工具或平台。

 

转载地址:http://ofbvo.baihongyu.com/

你可能感兴趣的文章
ffmpeg解码流程
查看>>
python is == 的区别
查看>>
Intellij IDEA:maven的本地仓库问题
查看>>
PKI/CA
查看>>
REST下的WCF的寄宿方式
查看>>
Hibernate整合进spring---使用自己的事务处理
查看>>
Android开发环境搭建与入门Hello World
查看>>
Sharepoint学习笔记—调试,诊错系列 (Debug&TroubleShooting)清单
查看>>
android讲义9之向电话本进行批处理的插入
查看>>
IIS负载均衡-Application Request Route详解第一篇: ARR介绍
查看>>
Activity返回值[转]
查看>>
模拟发送POST或Get请求
查看>>
SQL语句判断数据库、表、字段是否存在
查看>>
IE下使用excanvas.js之后动态创建的canvas不支持getContext的解决方法(转)
查看>>
作者为何要创作《网站转换率优化之道》
查看>>
读书/看电影/看电视剧
查看>>
swfupdate flash上传工具
查看>>
闹钟开发过程中用PendingIntent传送数据丢失解决办法
查看>>
发给有道词典团队的建议信有恢复了,哈哈!
查看>>
eclipse运行maven的jetty插件内存溢出
查看>>