zoukankan      html  css  js  c++  java
  • 使用SSH执行远程登录

    #需要使用SSH协议登录本地或远程计算机,并发送命令
    #
    use ssh to control remote computers import os, sys, paramiko from getpass import getpass paramiko.util.log_to_file('auto_ssh.log',0) def parse_user(user,default_host, default_port): '''given name [@host[:port]],return name,host,port,if not, return default host and port''' if '@' not in user: return user, default_host, default_port user, host = user.split('@', 1) if ':' in host: host, port = host.split(':',1) else: port = default_port return user, host, int(port) def autoSsh(users, cmds, host = 'localhost', port = 22, timeout = 5.0, maxsize = 2000, password = None): max_size = 1024 if password is None: passwords = {} for user in users: if user not in passwords: passwords[user] = getpass("Enter user '%s' password:" %user) for user in users: user, host, port = parse_user(user, host, port) try: transport = paramiko.Transport((host, port)) transport.connect(username = user, password = passwords[user]) channel = transport.open_session() if timeout: channel.settimeout(timeout) for cmd in cmd_list: channel.exec_command(cmd) response = channel.recv(max_size) print 'CMD %r (%r) -> %s' % (cmd, user, response) except Exception, err: print "ERR: unable to process %r: %s" % (user, err) if __name__ == '__main__': logname = os.environ.get("LOGNAME", os.environ.get("USERNAME")) host = 'localhost' port = 22 usage = """ usage: %s [-h host] [-p port] [-f cmdfile] [-c "command"] user1 user2 ... -c command -f command file -h default host (default: localhost) -p default host (default: 22) Example: %s -c "echo $HOME" %s same as: %s -c "echo $HOME" %s@localhost:22 """ % (sys.argv[0], sys.argv[0], logname, sys.argv[0], logname) import getopt optlist, user_list = getopt.getopt(sys.argv[1:],'c:f:h:p:') if not user_list: print usage sys.exit(1) cmd_list = [ ] for opt , optarg in optlist: if opt == '-f': for r in open(optarg, 'rU'): if r.rstrip(): cmd_list.append(r) elif opt == '-c': command = optarg if command[0] == '"' and command[-1] == '"': command = command[1:-1] cmd_list.append(command) elif opt == '-h': host = optarg elif opt == '-p': port = optarg else: print 'unknown option %r' %opt print usage sys.exit(1) autoSsh(user_list, cmd_list, host = host, port = port)
  • 相关阅读:
    PAT 甲级 1002 A+B for Polynomials (25 分)
    数字提取——C语言
    粒子动画——Pygame
    李白打酒——C++
    C语言输出格雷码
    特殊篮子问题——C语言暴力破解
    黑白迷宫问题——深度优先搜索算法
    最近素数问题——C语言
    巧克力分配问题——C语言
    离散数学——逻辑推理系统
  • 原文地址:https://www.cnblogs.com/hzhida/p/2655713.html
Copyright © 2011-2022 走看看