Commit bc78331d authored by ibuler's avatar ibuler

基本完成

parent ab87420c
...@@ -15,6 +15,7 @@ import getpass ...@@ -15,6 +15,7 @@ import getpass
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from Crypto.Cipher import AES from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex from binascii import b2a_hex, a2b_hex
import re
os.environ['DJANGO_SETTINGS_MODULE'] = 'jumpserver.settings' os.environ['DJANGO_SETTINGS_MODULE'] = 'jumpserver.settings'
django.setup() django.setup()
...@@ -152,34 +153,62 @@ def posix_shell(chan, user, host): ...@@ -152,34 +153,62 @@ def posix_shell(chan, user, host):
def get_user_host(username): def get_user_host(username):
hosts = {} hosts_comments = {}
try: try:
user = User.objects.get(username=username) user = User.objects.get(username=username)
except ObjectDoesNotExist: except ObjectDoesNotExist:
return {'Error': 'username %s is not exist.' % username} return {'Error': 'username %s is not exist.' % username}, ['Error']
else: else:
perm_all = user.permission_set.all() perm_all = user.permission_set.all()
for perm in perm_all: for perm in perm_all:
hosts[perm.asset.ip] = perm.asset.comment hosts_comments[perm.asset.ip] = perm.asset.comment
return hosts hosts = hosts_comments.keys()
hosts.sort()
return hosts_comments, hosts
def get_port(ip): def get_connect_item(username, ip):
pass try:
asset = Asset.objects.get(ip=ip)
port = asset.port
def get_ldap_pwd(username): except ObjectDoesNotExist:
pass red_print("Host %s isn't exist." % ip)
return
if not asset.ldap_enable:
user = User.objects.get(username=username)
ldap_pwd = user.ldap_pwd
return username, ldap_pwd, ip, port
def connect_one(username, segment): else:
assets = Asset.objects.filter(ip__icontains=segment) perms = asset.permission_set.all()
if len(assets) > 1: perm = perms[0]
for asset in assets:
print '%s -- %s' % (asset.ip, asset.comment) if perm.perm_user_type == 'S':
elif len(assets) == 1: return asset.username_super, asset.password_super, ip, port
asset = assets[0] else:
permission = asset.permission_set.all() return asset.username_common, asset.password_common, ip, port
def verify_connect(username, part_ip):
ip_matched = []
hosts_comments, hosts = get_user_host(username)
for ip in hosts:
if part_ip in ip:
ip_matched.append(ip)
if len(ip_matched) > 1:
for ip in ip_matched:
print '%s -- %s' % (ip, hosts_comments[ip])
elif len(ip_matched) < 1:
red_print('No Permission or No host.')
else:
try:
username, password, host, port = get_connect_item(username, ip_matched[0])
except (ObjectDoesNotExist, IndexError):
red_print('Get get_connect_item Error.')
else:
connect(username, password, host, port)
def print_prompt(): def print_prompt():
...@@ -193,9 +222,9 @@ def print_prompt(): ...@@ -193,9 +222,9 @@ def print_prompt():
def print_user_host(username): def print_user_host(username):
host_all = get_user_host(username) hosts_comments, hosts = get_user_host(username)
for ip, comment in host_all.items(): for ip in hosts:
print '%s -- %s' % (ip, comment) print '%s -- %s' % (ip, hosts_comments[ip])
def connect(username, password, host, port): def connect(username, password, host, port):
...@@ -258,7 +287,7 @@ if __name__ == '__main__': ...@@ -258,7 +287,7 @@ if __name__ == '__main__':
elif option in ['Q', 'q']: elif option in ['Q', 'q']:
sys.exit() sys.exit()
else: else:
pass verify_connect(login_name, option)
except IndexError: except IndexError:
pass pass
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment