#!/usr/bin/env python
#-*- coding:utf-8 -*-

from multiprocessing import Process,Pool
import time,paramiko,sys,os
host_list = (
  ('16.74.185.167','root','123456','df -Th'),
  ('139.128.34.22','root','123456','df -Th')
)

s = paramiko.SSHClient() #绑定实例
s.load_system_host_keys() #加载本机.ssh/knows_host文件
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())

def ssh_run(host_info):
  ip,username,password,cmd = host_info
  s.connect(ip,22,username,password,timeout=5)
  stdin,stdout,stderr = s.exec_command(cmd)
  cmd_result = stdout.read(),stderr.read()
  print '\033[32;1m----------------%s------------------\033[0m' %ip
  for line in cmd_result:
    print line,

p = Pool(processes=1) #1表示单进程,根据cpu核数定,一般是几个核就写几 
result_list = []

for h in host_list:
   result_list.append(p.apply_async(ssh_run, [h,]))

for res in result_list:
  res.get()

s.close()

命令已经写死

高级版:自定义命令显示结果并手动退出

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from multiprocessing import Process,Pool
import time,paramiko,sys,os
host_list = (
  ('10.174.85.167','root','123456'),
  ('139.16.139.15','root','123456'),
  ('139.24.11.58','root',666448..')
)

s = paramiko.SSHClient() #绑定实例
s.load_system_host_keys() #加载本机.ssh/knows_host文件
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())

def ssh_run(host_info,cmd):
  ip,username,password = host_info
  s.connect(ip,22,username,password,timeout=5)
  stdin,stdout,stderr = s.exec_command(cmd)
  cmd_result = stdout.read(),stderr.read()
  print '\033[32;1m----------------%s------------------\033[0m' %ip
  for line in cmd_result:
    print line,

p = Pool(processes=2)
result_list = []
q='quit'
e='exit'

#------通过输入来判断------

while True:
  input_cmd = raw_input("please input command:").strip()
  if input_cmd == q or input_cmd == e:
    break
  else:
    for h in host_list:
      result_list.append(p.apply_async(ssh_run, [h,input_cmd]))

    for res in result_list:
      res.get()
s.close()

python远程批量执行命令的更多相关文章

  1. Python远程linux执行命令

    1.远程登录到linux上,使用到的模块paramiko #远程登陆操作系统 def ssh(sys_ip,username,password,cmds): try #创建ssh客户端 client ...

  2. linux下远程服务器批量执行命令及SFTP上传文件 -- python实现

    之前写过一个python远程执行命令的脚本,但在一个性能测试中,要将程序批量分发到不同服务器,程序无法使用,再将之前的脚本更新,加入批量上传的功能.之前脚本地址:http://www.cnblogs. ...

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

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

  4. linux集群自动化搭建(生成密钥对+分发公钥+远程批量执行脚本)

    之前介绍过ansible的使用,通过ssh授权批量控制服务器集群 但是生成密钥和分发公钥的时候都是需要确认密码的,这一步也是可以自动化的,利用ssh + expect + scp就可以实现,其实只用这 ...

  5. shell脚本批量执行命令----必需判断上一步执行结果--没有捷径

    # 注意:shell脚本批量执行命令,不能只写一个函数,然后把所有命令复制进去,之前试过这样是不行的.必须要有一个判断命令执行成功与否的语句 # 简单的命令可以不加结果判断符号,但是遇到解压包.sed ...

  6. python-ssh-远程服务器+远程docker执行命令

    在python语言中实现远程服务器执行命令+远程dcoker执行命令 def ssh_exec_command(ip, username, password, cmd=None): "&qu ...

  7. Linux远程ssh执行命令expect使用及几种方法

    expect命令实现脚本免交互 一.Linux下SSH无密码认证远程执行命令 在客户端使用ssh-keygen生成密钥对,然后把公钥复制到服务端(authorized_keys). 实现步骤: 1.客 ...

  8. linux集群批量执行命令

    因为工作需要,需要修改集群中机器的配置,一台一台的修改太浪费时间,就想能不能通过自动化脚本批量执行命令,尝试写一个,自己shell不熟悉,写的有点渣渣 if [ "$#" -ne ...

  9. [转] ansible批量执行命令展示

    [From] https://blog.csdn.net/zhydream77/article/details/81223805 ansible命令基础 • ansible <host-patt ...

随机推荐

  1. 微软IE11浏览器的7大变化

    微软IE11浏览器的7大变化 投递人 itwriter 发布于 2013-06-29 11:48 评论(9) 有1025人阅读  原文链接  [收藏]  « » 微软很看重自己的 IE 浏览器,这款浏 ...

  2. pipe----管道

    #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h&g ...

  3. [置顶] vs2008 编译adb 支持4.2 android 系统(改进版)

    QQ: 2506314894 本想晚些时候放出来的,但是按捺不住啊,所以修改了之后就立即放出来了.先说明一下,这次用的adb 的源码比较新的,用的vs2008 编译出来,只有一个exe 文件,直接就可 ...

  4. 深入剖析Linux I/O操作与标准I/O操作区别与联系

    文件I/O:open creat close lseek read write dup dup2 sync fsync fcntl ioctl 所有函数都是针对文件描述符. 所有的都是原子操作,这个在 ...

  5. 深入学习Java中的字符串,代码点和代码单元

    在Java字符串处理时,在使用length和charAt方法时,应该格外小心,因为length返回的是UTF-16编码表示下的代码单元数量,而非我们所认为的字符的个数,charAt方法返回的是指定位置 ...

  6. ajax系列之用jQuery的ajax方法向服务器发出get和post请求

    打算写个ajax系列的博文,主要是写给自己看,学习下ajax的相关知识和用法,以更好的在工作中使用ajax. 假设有个网站A,它有一个简单的输入用户名的页面,界面上有两个输入框,第一个输入框包含在一个 ...

  7. 【Scala】Scala之String

    一.前言 大数据领域的Spark.Kafka.Summingbird等都是由Scala语言编写而成,相比Java而言,Scala更精炼.由于笔者从事大数据相关的工作,所以有必要好好学习Scala语言, ...

  8. MySQL基础知识2

  9. Sipdroid实现SIP(六): SIP中的请求超时和重传

    目录 一. Sipdroid的请求超时和重传 二. SIP中超时和重传的定义 三. RFC中超时和重传的定义 一. Sipdroid的请求超时和重传 Sipdroid实现SIP协议栈系列, 之前的文章 ...

  10. CMD常用指令

    列出所有端口使用情况 netstat -ano 只查看端口5060使用情况 netstat -ano|findstr "5060" 查看进程8612的信息 tasklist|fin ...