一 丑话说前头
Jumpserver是一款开源的堡垒机。底层框架是用Django写的,学习它的源代码会对自身的能力提高有一定帮助,但对我来说这么一套复杂的系统,也只是浅浅地看看,娱乐为主。
二 走起
1 安装部署
官网上安装使用的文档很详尽,照着装就没问题,能明白它每步是做什么的就更棒了。
2 开机自启
虽然官方文档很详尽,但我重启系统后,堡垒机并没有启动。它起服务是靠脚本,并且有两个用docker部署的组件——koko和guacamole,应该是远程连接和文件传输用的——也是没启动的。
对于堡垒机的服务,写个启动脚本放在系统开机自启里就行了,如下:
[root@jumpserver ~]# cat jumpserver_start.sh
source /opt/py3/bin/activate #先要进python虚拟环境
cd /opt/jumpserver
./jms start all -d #执行堡垒机启停脚本
对于两个组件,在部署时docker run
命令中加上参数--restart=always
就行。
3 尝试改变
大的部分一时半会还没能力改,也就先改改描述、logo什么的找找框架逻辑。
就拿登陆界面的copyright来说,学了Django后就知道从url中可以看出这个登陆页去哪找。我找到了logo.html的网页,但典型的Django语句把线索转移到另一个页面上。
当我用find命令找到这个文件后,发现它就两行。
线索断了,没关系,因为原版的copyright的署名唯一,所以我就写了个脚本,搜索文件里的文字。
# -*- coding: utf-8 -*-
import os,sys
var = sys.argv[1]
path = r"/opt/jumpserver/"
cmd = "grep %s"%var
for root,dirs,files in os.walk(path):
for file in files: #获取文件路径
a = os.path.join(root,file)
b = os.system("%s %s"%(cmd,a))
if b != 256:
print(a)
print('')
我已经改过了,所以我搜的自己的网名。
先不看别的,就看中间那个py文件。
原作者或团队把logo、标题、版权什么信息的都放一起,彰显了开源的大家风范。再回来说刚才搜到的django.po文件。
里面都是一对对msgid和msdstr,并且列出了所有出现的文件位置。这个可以看成是语言转换翻译,代码里用的都是msgid,而页面上显示的是对应的中文。如果别的国家想用自己的语言,写一套对应的msdstr就行了,然后用msgfmt将.po文件转换成二进制的.mo文件。这也是刚才搜索出django.mo并显示二进制文件的原因。
4 上logo
即使作为一个冒牌的全栈工程师,UI设计也是不能少的。我用PS做了个logo,我自己都觉得像那么回事。
我又给主页左侧的条目加了图标,但条目分大小,当点开小条目时,大条目的图标就没了。
原版的图标是font-awesome库提供的,它有一套CSS样式,我觉得当点击二级条目时,样式变了,而我加的图标是固定的,所以样式一变我的图标就丢失了。CSS虽然看过教程,但还是不会,所以样式先不搞了,整体效果如图:
5 量身定做
从head加载的模块来看,bootstrap、jquery、echarts我都学过,再加上本身是django框架,简直就是让我练手的,虽然每项我学的连十分之一都不到。
三 浅尝辄止
大概的框架有点印象了,至于后面还搞不搞我也不敢说死,有时间有兴趣就搞搞,没时间就算了。
不过现在很多大学的计算机公共课教的都是Python了,这大学一毕业就自带Python技能,我学的又快被后浪淹没了。