孙本新 ssh远程登录多台服务器执行其上脚本_多进程版本

<无详细内容>
标签: <无>

代码片段(1)[全屏查看所有代码]

1. [文件] jssh.py ~ 2KB     下载(10)    

01#!/usr/bin/python
02#-*- coding:utf-8 -*-
03#author sunbx@funshion.com
04#date   2013-10-10
05 
06import sys, time, os, multiprocessing
07 
08try:
09    import pexpect
10except ImportError:
11    print """
12         You must install pexpect module
13    """
14    sys.exit(1)
15 
16addr_map = {
17    'server_1' : ('sunbx@192.168.8.91', 'sunbx'),
18    'server_2' : ('sunbx@192.168.8.91', 'sunbx'),
19    'server_3' : ('sunbx@192.168.8.91', 'sunbx'),
20    'server_4' : ('sunbx@192.168.8.91', 'sunbx'),
21    'server_5' : ('sunbx@192.168.8.91', 'sunbx'),
22}
23 
24cmd_map = {
25    'huitui':"/home/sunbx/path/server/workspace/project/.script/huitui.sh",
26    'fabu' : "/home/sunbx/path/server/workspace/project/.script/fabu.sh",
27}
28 
29if len(sys.argv) != 2:
30    sys.stderr.write("Usage: python %s cmd \n" % sys.argv[0])
31    raise SystemExit(1)
32     
33try:
34    cmd_key = sys.argv[1]
35    cmd     = cmd_map[cmd_key]
36except:
37    sys.stderr.write("Usage: python %s cmd \n" % sys.argv[0])
38    print """
39            cmd: huitui or fabu
40    """
41    raise SystemExit(1)
42 
43cmd_output_map = {}
44 
45class JsshProcess(multiprocessing.Process):
46    def __init__(self, server_id):
47        multiprocessing.Process.__init__(self)
48        self.server_id = server_id
49    def run(self):
50    server = pexpect.spawn('ssh %s' % addr_map[self.server_id][0])
51    #server.expect('.*yes/no.*')
52    #server.sendline("yes")
53    server.expect('.*ssword:')
54    server.sendline(addr_map[self.server_id][1])
55    command_output = pexpect.run('bash %s' % cmd)
56        server.sendline("quit")
57    print command_output + self.server_id
58 
59for key in addr_map:
60    p = JsshProcess(key)
61    p.start()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值