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

脚本示例如下:

# coding:utf-8
import time,paramiko,re,StringIO def 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 f def check_ip(content):
'''
从content中取出所有符合xx.120.xx.xx格式的ip地址(xx代表任意多数字)并返回
'''
ips = re.findall('\d+\.120\.\d+\.\d+',content)
return ips if __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的工具或平台。

 

Python通过ssh连接服务器并执行命令的更多相关文章

  1. java使用ssh连接Linux并执行命令

     方式1:通过设置账号密码和链接地址 maven pom.xml配置: <dependency>         <groupId>com.jcraft</groupId ...

  2. Python实现ssh批量登录并执行命令

    局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件 ...

  3. golang使用ssh远程连接服务器并执行命令

    安装golang.org/x 直接去github上面,把https://github.com/zieckey/golang.org,把整个目录拷贝下来放到你的gopath下面即可.记住在gopath的 ...

  4. ssh远程连接linux服务器并执行命令

    详细方法: SSHClient中的方法 参数和参数说明 connect(实现ssh连接和校验) hostname:目标主机地址 port:主机端口 username:校验的用户名 password:登 ...

  5. python批量操作Linux服务器脚本,ssh密码登录(执行命令、上传、下载)(一)

     -*-          paramiko.util.log_to_file(         ssh = paramiko.SSHClient()          ssh.set_missing ...

  6. python paramiko实现ssh上传下载执行命令

    paramiko ssh上传下载执行命令 序言 最近项目经常需要动态在跳板机上登录服务器进行部署环境,且服务器比较多,每次完成所有服务器到环境部署执行耗费大量时间.为了解决这个问题,根据所学的执行实现 ...

  7. Python 实现远程服务器批量执行命令

    paramiko 远程控制介绍 Python paramiko是一个相当好用的远程登录模块,采用ssh协议,可以实现linux服务器的ssh远程登录.首先来看一个简单的例子 import parami ...

  8. java ssh远程服务器并执行多条shell命令

    java ssh远程服务器并执行多条命令 import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...

  9. 【Shell实战】批量在多台服务器上执行命令

    功能说明:批量在多台服务器上执行命令 #!/bin/bash # ========================================== # 功能:批量在多台服务器上执行命令 # 方法: ...

随机推荐

  1. Zabbix 常见问题处理整理

    zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. 下载: http://www.zabbix.com/download.php 帮助:https://www ...

  2. android开发资源

    android仿微信 http://www.oschina.net/code/snippet_253900_33261

  3. MongoDB学习笔记(4)--collection

    MongoDB 创建集合 本章节我们为大家介绍如何使用 MongoDB 来创建集合. MongoDB 中使用 createCollection() 方法来创建集合. 语法格式: db.createCo ...

  4. Linux系统排查——CPU负载篇

    本随笔介绍CPU负载的排查手段. 查看系统负载的工具:uptime,w,都能查看系统负载,系统平均负载是处于运行或不可打扰状态的进程的平均数, 可运行:运行态,占用CPU,或就绪态,等待CPU调度. ...

  5. 使用equals方法时,要注意

    这是我在项目中犯的一个低级错误: 使用equals方法时,要注意这个方法是boolean java.lang.String.equals(Object anObject)传递的是Object,所以传任 ...

  6. Ubuntu 13.04 VirtualBox在工作区中的切换

    Ubuntu的工作区很方便,可以有好几个工作区,本人自从换了Ubuntu深感Ubuntu在应用软件上的缺失(当然显然这不是Ubuntu的错).为了弥补缺失,我只能安装了Virtualbox虚拟机,里边 ...

  7. es6 对象解构 与 参数默认值

    var abc = ({a = 123, b = 321, c = 456} = {}) => console.log(20181109155055, a) abc()

  8. linux环境下matlab连接mysql

    因为matlab是基于java的,但是原生的matlab是没有jdbc的,这是一个java的mysql connection. 只有matlab有这个包,才能正确的连接mysql. 1.在http:/ ...

  9. mybatis一对一和一对多实例

    一对一:<association></association> 一对多:<collection></collection> ClassMapper.xm ...

  10. 【Android UI】如何做一个纯粹的Android app UI 设计

    原文:http://android.eoe.cn/topic/summary 许多开发者会在多个平台上发布应用.如果您打算为 Android 开发应用,请记住在不同的平台需要遵守不同的要求和惯例.在某 ...