使用SSH执行远程登录
生活随笔
收集整理的這篇文章主要介紹了
使用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_portuser, host = user.split('@', 1)if ':' in host:host, port = host.split(':',1)else:port = default_portreturn user, host, int(port)def autoSsh(users, cmds, host = 'localhost', port = 22, timeout = 5.0, maxsize = 2000, password = None):max_size = 1024if 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 = 22usage = """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" %ssame as: %s -c "echo $HOME" %s@localhost:22""" % (sys.argv[0], sys.argv[0], logname, sys.argv[0], logname)import getoptoptlist, user_list = getopt.getopt(sys.argv[1:],'c:f:h:p:')if not user_list:print usagesys.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 = optargif command[0] == '"' and command[-1] == '"':command = command[1:-1]cmd_list.append(command)elif opt == '-h':host = optargelif opt == '-p':port = optargelse:print 'unknown option %r' %optprint usagesys.exit(1)autoSsh(user_list, cmd_list, host = host, port = port)
# 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_portuser, host = user.split('@', 1)if ':' in host:host, port = host.split(':',1)else:port = default_portreturn user, host, int(port)def autoSsh(users, cmds, host = 'localhost', port = 22, timeout = 5.0, maxsize = 2000, password = None):max_size = 1024if 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 = 22usage = """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" %ssame as: %s -c "echo $HOME" %s@localhost:22""" % (sys.argv[0], sys.argv[0], logname, sys.argv[0], logname)import getoptoptlist, user_list = getopt.getopt(sys.argv[1:],'c:f:h:p:')if not user_list:print usagesys.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 = optargif command[0] == '"' and command[-1] == '"':command = command[1:-1]cmd_list.append(command)elif opt == '-h':host = optargelif opt == '-p':port = optargelse:print 'unknown option %r' %optprint usagesys.exit(1)autoSsh(user_list, cmd_list, host = host, port = port)
總結
以上是生活随笔為你收集整理的使用SSH执行远程登录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于.cpp文件包含另一个.cpp文件出
- 下一篇: 关于easyui datagrid分页的