Commit 4f979870 authored by ibuler's avatar ibuler

Merge pull request #97 from jumpserver/bug_fix_guang

fix 启动脚本,配置文件,批量命令异常等
parents 69ac8ae1 cba53bba
...@@ -523,7 +523,13 @@ class Nav(object): ...@@ -523,7 +523,13 @@ class Nav(object):
if gid_pattern.match(str_r): if gid_pattern.match(str_r):
gid = int(str_r.lstrip('g')) gid = int(str_r.lstrip('g'))
# 获取资产组包含的资产 # 获取资产组包含的资产
user_asset_search = get_object(AssetGroup, id=gid).asset_set.all() asset_group = get_object(AssetGroup, id=gid)
if asset_group:
user_asset_search = asset_group.asset_set.all()
else:
color_print('没有该资产组或没有权限')
return
else: else:
# 匹配 ip, hostname, 备注 # 匹配 ip, hostname, 备注
for asset in user_asset_all: for asset in user_asset_all:
...@@ -609,6 +615,9 @@ class Nav(object): ...@@ -609,6 +615,9 @@ class Nav(object):
command = raw_input("\033[1;32mCmds>:\033[0m ").strip() command = raw_input("\033[1;32mCmds>:\033[0m ").strip()
if command == 'q': if command == 'q':
break break
elif not command:
color_print('命令不能为空...')
continue
runner.run('shell', command, pattern=pattern) runner.run('shell', command, pattern=pattern)
ExecLog(host=asset_name_str, user=self.user.username, cmd=command, remote_ip=remote_ip, ExecLog(host=asset_name_str, user=self.user.username, cmd=command, remote_ip=remote_ip,
result=runner.results).save() result=runner.results).save()
...@@ -661,7 +670,7 @@ class Nav(object): ...@@ -661,7 +670,7 @@ class Nav(object):
runner = MyRunner(res) runner = MyRunner(res)
runner.run('copy', module_args='src=%s dest=%s directory_mode' runner.run('copy', module_args='src=%s dest=%s directory_mode'
% (tmp_dir, tmp_dir), pattern=pattern) % (tmp_dir, '/tmp'), pattern=pattern)
ret = runner.results ret = runner.results
FileLog(user=self.user.name, host=asset_name_str, filename=filename_str, FileLog(user=self.user.name, host=asset_name_str, filename=filename_str,
remote_ip=remote_ip, type='upload', result=ret).save() remote_ip=remote_ip, type='upload', result=ret).save()
...@@ -815,7 +824,6 @@ def main(): ...@@ -815,7 +824,6 @@ def main():
except IndexError, e: except IndexError, e:
color_print(e) color_print(e)
time.sleep(5) time.sleep(5)
pass
if __name__ == '__main__': if __name__ == '__main__':
main() main()
...@@ -97,13 +97,13 @@ class PreSetup(object): ...@@ -97,13 +97,13 @@ class PreSetup(object):
conf = ConfigParser.ConfigParser() conf = ConfigParser.ConfigParser()
conf.read(conf_file) conf.read(conf_file)
conf.set('base', 'url', 'http://%s' % self.ip) conf.set('base', 'url', 'http://%s' % self.ip)
conf.set('base', 'websocket_url', 'ws://%s' % self.ip)
conf.set('base', 'key', self.key) conf.set('base', 'key', self.key)
conf.set('db', 'host', self.db_host) conf.set('db', 'host', self.db_host)
conf.set('db', 'port', self.db_port) conf.set('db', 'port', self.db_port)
conf.set('db', 'user', self.db_user) conf.set('db', 'user', self.db_user)
conf.set('db', 'password', self.db_pass) conf.set('db', 'password', self.db_pass)
conf.set('db', 'database', self.db) conf.set('db', 'database', self.db)
conf.set('websocket', 'web_socket_host', '%s:3000' % self.ip)
conf.set('mail', 'email_host', self.mail_host) conf.set('mail', 'email_host', self.mail_host)
conf.set('mail', 'email_port', self.mail_port) conf.set('mail', 'email_port', self.mail_port)
conf.set('mail', 'email_host_user', self.mail_addr) conf.set('mail', 'email_host_user', self.mail_addr)
...@@ -237,7 +237,7 @@ class PreSetup(object): ...@@ -237,7 +237,7 @@ class PreSetup(object):
print print
def start(self): def start(self):
color_print('请务必先查看wiki https://github.com/ibuler/jumpserver/wiki/Quickinstall') color_print('请务必先查看wiki https://github.com/jumpserver/jumpserver/wiki')
time.sleep(3) time.sleep(3)
self._rpm_repo() self._rpm_repo()
self._depend_rpm() self._depend_rpm()
......
...@@ -86,7 +86,7 @@ class Setup(object): ...@@ -86,7 +86,7 @@ class Setup(object):
os.chmod('init.sh', 0755) os.chmod('init.sh', 0755)
os.chmod('connect.py', 0755) os.chmod('connect.py', 0755)
os.chmod('manage.py', 0755) os.chmod('manage.py', 0755)
os.chmod('run_websocket.py', 0755) os.chmod('run_server.py', 0755)
os.chmod('service.sh', 0755) os.chmod('service.sh', 0755)
os.chmod('logs', 0777) os.chmod('logs', 0777)
os.chmod('keys', 0777) os.chmod('keys', 0777)
...@@ -95,7 +95,7 @@ class Setup(object): ...@@ -95,7 +95,7 @@ class Setup(object):
def _run_service(): def _run_service():
os.system('sh %s start' % os.path.join(jms_dir, 'service.sh')) os.system('sh %s start' % os.path.join(jms_dir, 'service.sh'))
print print
color_print('安装成功,请访问web, 祝你使用愉快。\n请访问 https://github.com/jumpserver/jumpserver 查看文档', 'green') color_print('安装成功,请访问web, 祝你使用愉快。\n请访问 https://github.com/jumpserver/jumpserver/wiki 查看文档', 'green')
def start(self): def start(self):
print "开始安装Jumpserver, 要求环境为 CentOS 6.5 x86_64" print "开始安装Jumpserver, 要求环境为 CentOS 6.5 x86_64"
......
...@@ -9,7 +9,7 @@ from django.http import HttpResponseNotFound ...@@ -9,7 +9,7 @@ from django.http import HttpResponseNotFound
from jlog.log_api import renderTemplate from jlog.log_api import renderTemplate
from jlog.models import Log, ExecLog, FileLog from jlog.models import Log, ExecLog, FileLog
from jumpserver.settings import WEB_SOCKET_HOST from jumpserver.settings import WEB_SOCKET_URL
@require_role('admin') @require_role('admin')
...@@ -66,8 +66,8 @@ def log_list(request, offset): ...@@ -66,8 +66,8 @@ def log_list(request, offset):
contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request) contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request)
web_monitor_uri = '%s/monitor' % WEB_SOCKET_HOST web_monitor_url = '%s/monitor' % WEB_SOCKET_URL
web_kill_uri = '/kill' web_kill_url = '/kill'
session_id = request.session.session_key session_id = request.session.session_key
return render_to_response('jlog/log_%s.html' % offset, locals(), context_instance=RequestContext(request)) return render_to_response('jlog/log_%s.html' % offset, locals(), context_instance=RequestContext(request))
......
[base] [base]
url = http://192.168.244.129 url = http://192.168.244.129
key = 88aaaf7ffe3c6c04 websocket_url = ws://192.168.244.129
key = i6k2zeu8x6mncl76
ip = 0.0.0.0
port = 80
log = debug log = debug
ip = 127.0.0.1
port = 8080
[db] [db]
host = 127.0.0.1 host = 127.0.0.1
...@@ -12,14 +13,11 @@ user = jumpserver ...@@ -12,14 +13,11 @@ user = jumpserver
password = mysql234 password = mysql234
database = jumpserver database = jumpserver
[websocket]
web_socket_host = 192.168.244.129:3000
[mail] [mail]
mail_enable = 1 mail_enable = 1
email_host = smtp.qq.com email_host = smtp.exmail.qq.com
email_port = 25 email_port = 25
email_host_user = xxxxxxxx@qq.com email_host_user = noreply@jumpserver.org
email_host_password = xxxxxx email_host_password = xxxxxxxxxx
email_use_tls = False email_use_tls = True
...@@ -484,7 +484,8 @@ def my_render(template, data, request): ...@@ -484,7 +484,8 @@ def my_render(template, data, request):
def get_tmp_dir(): def get_tmp_dir():
dir_name = os.path.join('/tmp', uuid.uuid4().hex) seed = uuid.uuid4().hex[:4]
dir_name = os.path.join('/tmp', '%s-%s' % (datetime.datetime.now().strftime('%Y%m%d-%H%M%S'), seed))
mkdir(dir_name, mode=0777) mkdir(dir_name, mode=0777)
return dir_name return dir_name
......
...@@ -41,7 +41,7 @@ SSH_KEY_DIR = os.path.join(BASE_DIR, 'keys/role_keys') ...@@ -41,7 +41,7 @@ SSH_KEY_DIR = os.path.join(BASE_DIR, 'keys/role_keys')
KEY = config.get('base', 'key') KEY = config.get('base', 'key')
URL = config.get('base', 'url') URL = config.get('base', 'url')
LOG_LEVEL = config.get('base', 'log') LOG_LEVEL = config.get('base', 'log')
WEB_SOCKET_HOST = config.get('websocket', 'web_socket_host') WEB_SOCKET_URL = config.get('base', 'websocket_url')
IP = config.get('base', 'ip') IP = config.get('base', 'ip')
PORT = config.get('base', 'port') PORT = config.get('base', 'port')
......
...@@ -286,7 +286,7 @@ def upload(request): ...@@ -286,7 +286,7 @@ def upload(request):
res = gen_resource({'user': user, 'asset': asset_select}) res = gen_resource({'user': user, 'asset': asset_select})
runner = MyRunner(res) runner = MyRunner(res)
runner.run('copy', module_args='src=%s dest=%s directory_mode' runner.run('copy', module_args='src=%s dest=%s directory_mode'
% (upload_dir, upload_dir), pattern='*') % (upload_dir, '/tmp'), pattern='*')
ret = runner.results ret = runner.results
logger.debug(ret) logger.debug(ret)
FileLog(user=request.user.username, host=' '.join([asset.hostname for asset in asset_select]), FileLog(user=request.user.username, host=' '.join([asset.hostname for asset in asset_select]),
...@@ -356,8 +356,7 @@ def web_terminal(request): ...@@ -356,8 +356,7 @@ def web_terminal(request):
if asset: if asset:
print asset print asset
hostname = asset.hostname hostname = asset.hostname
# web_terminal_uri = '%s/ws/terminal?id=%s&role=%s' % (WEB_SOCKET_HOST, asset_id, role_name) web_terminal_url = '%s/ws/terminal?id=%s&role=%s' % (WEB_SOCKET_URL, asset_id, role_name)
web_terminal_uri = '/ws/terminal?id=%s&role=%s' % (asset_id, role_name)
return render_to_response('jlog/web_terminal.html', locals()) return render_to_response('jlog/web_terminal.html', locals())
...@@ -464,6 +464,6 @@ if __name__ == '__main__': ...@@ -464,6 +464,6 @@ if __name__ == '__main__':
# server.bind(options.port, options.host) # server.bind(options.port, options.host)
# #server.listen(options.port) # #server.listen(options.port)
# server.start(num_processes=5) # server.start(num_processes=5)
# print "Run server on %s:%s" % (options.host, options.port)
# tornado.ioloop.IOLoop.instance().start() # tornado.ioloop.IOLoop.instance().start()
print "Run server on %s:%s" % (options.host, options.port)
main() main()
...@@ -4,53 +4,43 @@ ...@@ -4,53 +4,43 @@
# chkconfig: - 85 12 # chkconfig: - 85 12
# description: Open source detecting system # description: Open source detecting system
# processname: jumpserver # processname: jumpserver
# Date: 2015-04-12 # Date: 2016-02-27
# Version: 2.0.0 # Version: 3.0.1
# Site: http://www.jumpserver.org # Site: http://www.jumpserver.org
# Author: Jumpserver Team # Author: Jumpserver Team
base_dir=$(dirname $0) jumpserver_dir=
. ${base_dir}/functions
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node/bin
base_dir=$(dirname $0)
jumpserver_dir=${jumpserver_dir:-$base_dir}
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
PROC_NAME="jumpsever"
if [ -f ${jumpserver_dir}/install/functions ];then
. ${jumpserver_dir}/install/functions
elif [ -f /etc/init.d/functions ];then
. /etc/init.d/functions
else
echo "No functions script found in [./functions, ./install/functions, /etc/init.d/functions]"
exit 1
fi
PROC_NAME="jumpserver"
lockfile=/var/lock/subsys/${PROC_NAME} lockfile=/var/lock/subsys/${PROC_NAME}
start() { start() {
jump_start=$"Starting ${PROC_NAME} service:" jump_start=$"Starting ${PROC_NAME} service:"
if [ -f $lockfile ];then if [ -f $lockfile ];then
echo "jumpserver is running..." echo -n "jumpserver is running..."
success "$jump_start" success "$jump_start"
echo
else else
# daemon python $base_dir/manage.py runserver 0.0.0.0:80 &>> /tmp/jumpserver.log 2>&1 & daemon python $jumpserver_dir/manage.py crontab add &>> /var/log/jumpserver.log 2>&1
daemon python $base_dir/manage.py crontab add &>> /tmp/jumpserver.log 2>&1 daemon python $jumpserver_dir/run_server.py &> /dev/null 2>&1 &
daemon python $base_dir/run_websocket.py &> /dev/null 2>&1 & sleep 1
sleep 4
echo -n "$jump_start" echo -n "$jump_start"
nums=0 ps axu | grep 'run_server' | grep -v 'grep' &> /dev/null
for i in manage.py run_websocket.py;do if [ $? == '0' ];then
if ps aux | grep "$i" | grep -v 'grep' &> /dev/null; then
nums=$[nums+1]
else
echo "$i not running"
fi
done
if [ "x$nums" == "x2" ];then
success "$jump_start" success "$jump_start"
if [ ! -e $lockfile ]; then
lockfile_dir=`dirname $lockfile`
mkdir -pv $lockfile_dir
fi
touch "$lockfile" touch "$lockfile"
echo echo
else else
...@@ -58,19 +48,14 @@ start() { ...@@ -58,19 +48,14 @@ start() {
echo echo
fi fi
fi fi
} }
stop() { stop() {
echo -n $"Stopping ${PROC_NAME} service:" echo -n $"Stopping ${PROC_NAME} service:"
daemon python $jumpserver_dir/manage.py crontab remove &>> /var/log/jumpserver.log 2>&1
daemon python $base_dir/manage.py crontab remove &>> /tmp/jumpserver.log 2>&1 ps aux | grep -E 'run_server.py' | grep -v grep | awk '{print $2}' | xargs kill -9 &> /dev/null
ps aux | grep -E 'manage.py|run_websocket.py' | grep -v grep | awk '{print $2}' | xargs kill -9 &> /dev/null
ret=$? ret=$?
if [ $ret -eq 0 ]; then if [ $ret -eq 0 ]; then
echo_success echo_success
echo echo
...@@ -83,6 +68,20 @@ stop() { ...@@ -83,6 +68,20 @@ stop() {
} }
status(){
ps axu | grep 'run_server' | grep -v 'grep' &> /dev/null
if [ $? == '0' ];then
echo -n "jumpserver is running..."
success
touch "$lockfile"
echo
else
echo -n "jumpserver is not running."
failure
echo
fi
}
restart(){ restart(){
...@@ -103,7 +102,10 @@ case "$1" in ...@@ -103,7 +102,10 @@ case "$1" in
restart restart
;; ;;
status)
status
;;
*) *)
echo $"Usage: $0 {start|stop|restart}" echo $"Usage: $0 {start|stop|restart|status}"
exit 2 exit 2
esac esac
...@@ -136,13 +136,8 @@ ...@@ -136,13 +136,8 @@
{# })#} {# })#}
{# });#} {# });#}
function init(obj){ function init(obj){
var protocol = "ws://";
if (window.location.protocol == 'https:') {
protocol = 'wss://';
}
var file_path = obj.attr('file_path'); var file_path = obj.attr('file_path');
var wsUri = protocol + '{{ web_monitor_uri }}'; var wsUri = '{{ web_monitor_url }}';
var socket = new WebSocket(wsUri + '?file_path=' + file_path); var socket = new WebSocket(wsUri + '?file_path=' + file_path);
var term = new Terminal({ var term = new Terminal({
...@@ -211,7 +206,7 @@ ...@@ -211,7 +206,7 @@
function cut(num, login_type){ function cut(num, login_type){
console.log(login_type); console.log(login_type);
if (login_type=='web'){ if (login_type=='web'){
var g_url = '{{ web_kill_uri }}' + '?id=' + num; var g_url = '{{ web_kill_url }}' + '?id=' + num;
} else { } else {
var g_url = "{% url 'log_kill' %}?id=" + num; var g_url = "{% url 'log_kill' %}?id=" + num;
} }
......
...@@ -43,12 +43,7 @@ ...@@ -43,12 +43,7 @@
} }
WSSHClient.prototype.connect = function(options) { WSSHClient.prototype.connect = function(options) {
var protocol = "ws://"; var endpoint = '{{ web_terminal_url }}';
if (window.location.protocol == 'https:') {
protocol = 'wss://';
}
var endpoint = protocol + document.URL.match(RegExp('//(.*?)/'))[1] + '{{ web_terminal_uri }}';
if (window.WebSocket) { if (window.WebSocket) {
this._connection = new WebSocket(endpoint); this._connection = new WebSocket(endpoint);
......
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