python tt

感慨,2年没上这个了,还能发现这个账号。再补个PYTHON版 2.6.6


#!/usr/bin/python
# --coding:gbk--
__author__ = 'zhangbo'
import paramiko, threading, sys, time, os
from multiprocessing import Pool



#执行线程传入分组名,主机用户信息tuple,执行命令
def do(group, lHosts, cmd):
    beginTime = time.time()

    #默认密码
    _DEF_PWD = '****'
    _DEF_SSH_PORT = 22
    varTmp = lHosts[1].split('@')
    varUserName = varTmp[0]
    varHostIp = varTmp[1]
    if len(lHosts) == 2:
        varPasswd = _DEF_PWD
    else:
        varPasswd = lHosts[2]


    if varPasswd == '': varPasswd = _DEF_PWD
    # paramiko.util.log_to_file("d:/filename.log")
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(policy=paramiko.MissingHostKeyPolicy())


    ssh.connect(hostname=varHostIp, port=_DEF_SSH_PORT, username=varUserName, password=varPasswd, timeout=2,allow_agent=False
                , look_for_keys=False)


    stdin, stdout, stderr = ssh.exec_command(cmd)
    msg = '---------------group: {0}  host: {1}  execution time: {2} --------------\n{3}' \
        .format(group, varHostIp, time.time() - beginTime, stdout.read())
    ssh.close()
    print  msg




def _getGroup(group):
    cmdRtn = os.popen("grep -w " + group + " data.dat|grep -v '#'").readlines()
    cmdRtn = [x.split() for x in cmdRtn]
    return cmdRtn




if __name__ == '__main__':
    if (sys.argv.__len__() < 3):
        print 'Please Enter 2 argv,', sys.argv.__len__() - 1, ' given'
        print '''Example:  tt crmexe pwd'''


        sys.exit(1)
    group = sys.argv[1]
    cmd = sys.argv[2]




    varGroups = _getGroup(group)
    if not varGroups:
        print 'Not Found Group', group
        exit(1)
    p=Pool()

#使用多进程,多线程时,在SSH连接时会耗时2秒多,比较慢 和PYTHON线程机制有关。
    for hostTuple in varGroups:
        p.apply_async(do,args=(group, hostTuple, cmd))
    p.close()
    p.join()




------------------------------------------------------

data.dat

crmexe crm@192.168.168.11
crmexe crm@192.168.168.12
webexe crm@192.168.168.13  456


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值