用Python多线程给主机组批量分发命令

需求:用Python的多线程对主机组批量分发命令

脚本内容:

[[email protected] opt]# cat index.py 
#!/usr/bin/env python
#coding:utf-8
import threading
import paramiko
import time

while True:
    time.sleep(3)
    comd = raw_input(‘请输入你要批量分发的命令:‘)
    num = 9     #定义IP最后一位数的初始值
    def run(n):
        private_key_path = ‘/root/.ssh/id_rsa‘                          #输入Key的路径
        key = paramiko.RSAKey.from_private_key_file(private_key_path)   #获得key
        ssh = paramiko.SSHClient()   #获取连接ssh方法
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())   #获允许连接不在know_hosts文件中的主机
        global num                                       #加上global可以在局部变量改全局变量的值
       
        samp.acquire()                                   #加上锁,4线程同时执行
        
        num += 1
        ip=‘192.168.200.%s‘ %num        #三台机器的IP地址
    
        ssh.connect(hostname=ip, port=22, username=‘root‘, pkey=key)  #连接相关信息
        stdin, stdout, stderr = ssh.exec_command(comd)  #执行命令
        print stdout.read()                             #输出命令
        ssh.close();                                    #关闭
    
        samp.release()                                   #解锁
    
    
    samp = threading.BoundedSemaphore(3)                 #最大连接数,也就是同时运行的线程数
    for i in range(3):
        t = threading.Thread(target=run,args=(i,))       #这里定义了三个线程,上面最大连接数又设为了三,也就是会同时运行这三个线程
        t.start()

执行结果展示:

时间: 2024-08-01 22:43:31

用Python多线程给主机组批量分发命令的相关文章

用Python多进程和paramiko给主机组批量分发命令和传送文件

需求: 1.用Python的多线程对主机组批量分发命令 2.需要有传送文件的功能 3.把输出的日志信息写到日志文件(包括正确输出日志,和错误输出日志,包含日志写入的时间) 准备工作: 1.把需要远程控制分发命令的机器(被控端)配置好ssh+key 2.下载第三方模块包 pycrypto-2.6.tar.gz   http://pan.baidu.com/s/1dFHSvcP paramiko-1.10.1.tar.gz http://pan.baidu.com/s/1hrWzg7y 在控制服务器

通过ansible批量管理Linux服务器:配置Inventory和批量执行命令

ansible是一款比较新的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括:(1).连接插件connection plugins:负责和被监控端实现通信:(2).host inventory:指定操作的主机,是一个配

使用Python 实现多主机简单的批量管理

1,当前操作系统环境 2,安装python所使用到的模块,使用pip命令安装yum -y install gcc#安装pycrypto wget http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz tar -xf pycrypto-2.6.tar.gz cd pycrypto-2.6/ python setup.py build && python setup.py install #测试,注意大小写 pyt

原创python多线程批量管理工具batch(不断完善)

#!/usr/bin/env python import threading import time import paramiko import os,sys from ip import ip_list,web_server,ip_msg from optparse import OptionParser from ssh_co.cfg.config import host_msg def opts(): parser = OptionParser(usage="usage %prog op

python多线程爬虫+批量下载斗图啦图片项目(关注、持续更新)

python多线程爬虫项目() 爬取目标:斗图啦(起始url:http://www.doutula.com/photo/list/?page=1) 爬取内容:斗图啦全网图片 使用工具:requests库实现发送请求.获取响应. xpath实现数据解析.提取和清洗 threading模块实现多线程爬虫 爬取结果: 思路:由于该爬虫存在网络密集IO和磁盘密集IO,存在大量等待时间,遂采用多线程方式爬取. 设计:本文采用多为结构化代码的面向对象封装设计思路,使用生产消费者模型,完成多线程的调度.爬取.

Python多线程、进程、协程

本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queue队列 开发一个线程池 进程 语法 进程间通讯 进程池 操作系统发展史 手工操作(无操作系统) 1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式. 手工操作程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把

(转)SSH批量分发管理&非交互式expect

目录 1 SSH批量分发管理 1.1 测试环境 1.2 批量管理步骤 1.3 批量分发管理实例 1.3.1 利用sudo提权来实现没有权限的用户拷贝 1.3.2 利用sudo提权开发管理脚本 1.3.3 利用rsync来实现增量备份 1.4 SSH批量管理分发脚本实战 1.5 SSH批量管理总结 2 非交互式expect 2.1 非交互式生成密钥及实现批量管理 2.2 一键批量安装httpd服务 2.3 一键自动化50台规模集群网站 1 SSH批量分发管理 基于口令的,如何实现批量管理:expe

Python脚本远程批量执行命令

摘要 本文主要写用python脚本远程连接多台服务器,然后批量执行命令,最终返回命令执行结果. 这个可以说是Ansible,Puppet等工具的最简单的雏形. 做运维的同学应该都知道的. 正文 multi_task.py #_*_coding:utf-8_*_ import  multiprocessing import paramiko import getpass import ConfigParser class MultiTask(object):     '''handles all 

SSH认证原理和批量分发管理

SSH密码认证原理 几点说明: 1.服务端/etc/ssh目录下有三对公钥私钥: [[email protected] ssh]# ls moduli ssh_config sshd_config ssh_host_dsa_key ssh_host_dsa_key.pub ssh_host_key ssh_host_key.pub ssh_host_rsa_key ssh_host_rsa_key.pub 其中,ssh_host_key和ssh_host_key.pub 用于ssh协议1版本:其