diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 000000000..8766f794e
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 000000000..3b312839b
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jumpserver.iml b/.idea/jumpserver.iml
index 9dcd47829..94e54876c 100644
--- a/.idea/jumpserver.iml
+++ b/.idea/jumpserver.iml
@@ -2,7 +2,7 @@
-
+
diff --git a/jumpserver.py b/jumpserver.py
index 9c7a64a25..1b5d5a50a 100755
--- a/jumpserver.py
+++ b/jumpserver.py
@@ -1,11 +1,14 @@
#!/usr/bin/python
# coding: utf-8
+cur_dir = os.path.dirname(__file__)
+sys.path.append('%s/webroot/AutoSA/' % cur_dir)
+os.environ['DJANGO_SETTINGS_MODULE'] = 'AutoSa.settings'
+
import os
import sys
import subprocess
import MySQLdb
-import pexpect
import struct
import fcntl
import termios
@@ -17,10 +20,11 @@ from binascii import b2a_hex, a2b_hex
import ConfigParser
import paramiko
import pxssh
+from UserManage.models import User
+
-base_dir = "/opt/jumpserver/"
cf = ConfigParser.ConfigParser()
-cf.read('%s/jumpserver.conf' % base_dir)
+cf.read('%s/jumpserver.conf' % cur_dir)
db_host = cf.get('db', 'host')
db_port = cf.getint('db', 'port')
@@ -34,6 +38,8 @@ assets_user_table = cf.get('jumpserver', 'assets_user_table')
key = cf.get('jumpserver', 'key')
+
+
class PyCrypt(object):
"""It's used to encrypt and decrypt password."""
def __init__(self, key):
@@ -112,8 +118,11 @@ def connect(host, port, user, password):
log_date_dir = '%s/%s' % (log_dir, time.strftime('%Y%m%d'))
if not os.path.isdir(log_date_dir):
os.mkdir(log_date_dir)
- logfile = open("%s/%s_%s" % (log_date_dir, host, user), 'a')
- logfile.write('\n\n%s\n\n' % time.strftime('%Y%m%d_%H%M%S'))
+ logfile = open("%s/%s_%s_%s" % (log_date_dir, host, user, time.strftime('%Y%m%d%H%M%S')), 'a')
+ db, cursor = connect_db(db_user, db_password, db_db, db_host, db_port)
+ cursor.execute('insert into logs (Fuser, Fhost, Flogfile, Fstart_time) value (%s, %s, %s, UNIX_TIMESTAMP())'
+ % (user, host, logfile))
+ logfile.write('\n%s\n' % time.strftime('%Y/%m/%d %H:%M:%S'))
try:
global foo
foo = pxssh.pxssh()
@@ -122,10 +131,13 @@ def connect(host, port, user, password):
foo.sendline('')
signal.signal(signal.SIGWINCH, sigwinch_passthrough)
foo.interact(escape_character=chr(28))
+ cursor.execute('update logs set Ffindsh=True, Fend_time=UNIX_TIMESTAMP() where Flogfile=%s' % logfile)
except pxssh.ExceptionPxssh as e:
print('登录失败: %s' % e)
+ cursor.execute('update logs set Ffindsh=2 where Flogfile=%s' % logfile)
except KeyboardInterrupt:
foo.logout()
+ cursor.execute('update logs set Ffindsh=True, Fend_time=UNIX_TIMESTAMP() where Flogfile=%s ' % logfile)
def ip_all_select(username):
diff --git a/jumpserver.sh b/scripts/jumpserver.sh
old mode 100755
new mode 100644
similarity index 100%
rename from jumpserver.sh
rename to scripts/jumpserver.sh
diff --git a/pip-requirement.txt b/scripts/pip-requirement.txt
similarity index 100%
rename from pip-requirement.txt
rename to scripts/pip-requirement.txt
diff --git a/webroot/AutoSa/AutoSa/settings.py b/webroot/AutoSa/AutoSa/settings.py
index a46dcf89a..ad040ae86 100644
--- a/webroot/AutoSa/AutoSa/settings.py
+++ b/webroot/AutoSa/AutoSa/settings.py
@@ -12,16 +12,16 @@ https://docs.djangoproject.com/en/1.6/ref/settings/
import os
import ConfigParser
-base_dir = "/opt/jumpserver/"
-cf = ConfigParser.ConfigParser()
-cf.read('%s/jumpserver.conf' % base_dir)
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
+CONF_DIR = os.path.dirname(os.path.dirname(BASE_DIR))
+CF = ConfigParser.ConfigParser()
+CF.read('%s/jumpserver.conf' % CONF_DIR)
-db_host = cf.get('db', 'host')
-db_port = cf.getint('db', 'port')
-db_user = cf.get('db', 'user')
-db_password = cf.get('db', 'password')
-db_db = cf.get('db', 'db')
+DB_HOST = CF.get('db', 'host')
+DB_PORT = CF.getint('db', 'port')
+DB_USER = CF.get('db', 'user')
+DB_PASSWORD = CF.get('db', 'password')
+DB_DB = CF.get('db', 'db')
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/
@@ -71,11 +71,11 @@ WSGI_APPLICATION = 'AutoSa.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
- 'NAME': db_db,
- 'USER': db_user,
- 'PASSWORD': db_password,
- 'HOST': db_host,
- 'PORT': db_port,
+ 'NAME': DB_DB,
+ 'USER': DB_USER,
+ 'PASSWORD': DB_PASSWORD,
+ 'HOST': DB_HOST,
+ 'PORT': DB_PORT,
}
}
diff --git a/webroot/AutoSa/UserManage/models.py b/webroot/AutoSa/UserManage/models.py
index d1bdd402b..d9f991581 100644
--- a/webroot/AutoSa/UserManage/models.py
+++ b/webroot/AutoSa/UserManage/models.py
@@ -23,3 +23,16 @@ class User(models.Model):
return self.username
+class Logs(models.Model):
+ user = models.CharField(max_length=50)
+ host = models.CharField(max_length=20)
+ logfile = models.CharField(max_length=1000)
+ finish = models.SmallIntegerField(max_length=4)
+ start_time = models.IntegerField()
+ end_time = models.IntegerField()
+
+ def __unicode__(self):
+ return self.logfile
+
+
+