CheungSSH是一款国人自主研发的Linux运维自动化管理服务器软件,秉着为企业下降运营成本,解放管理员双手和自动化生产的理念,创造的一套开源运维自动化系统。 javascript
ChuengSSH 特色
css
操做简单,全程Web界面,不须要特定的语法,不须要学习运做原理,即便不懂得Linux的人也能操做,界面全中文,点击鼠标就能指挥上千台服务器有序运做 html
功能完备,支持网络设备,Linux服务器,Windows服务器,命令执行、文件传输、批量部署程序、服务器资产信息收集、计划任务、开放的API等主要功能 前端
易于二次开发,python语言,开源代码,使用彻底免费 java
简易,无需安装任何插件,管理方便,无后患 python
安全无忧,经过Linux自带的SSH协议管理服务器,通讯安全,无需开启额外的端口和启动额外的程序,全部的操做都在CheungSSH控制机上保留,不修改被管理服务器的任何配置数据 git
安全存储数据,采用Mysql Oracle数据库 github
管理简单,无需额外建立任何管理帐号,只须要CheungSSH业务帐号便可,即平时登录服务器的帐户。作到无痕操做,不给服务器增长额外负担 web
效率更高,采用Redis缓存技术,全部的数据都缓存在Redis中,读取更快速 sql
权限控制,只有受权的操做,才能对现网生产服务器作改动
权限审核,全部的操做, 均有操做记录
堡垒机,全部的行动,都由CheungSSH替您执行,安全无忧、更省心、省时
无人值守,基本解放运维人员的上手,解绑运维的生活时间
非法操拦截,如 rm 命令,在没有被受权状况下,会被拦截
命令批量执行
脚本批量执行
文件自动上传
文件自动下载
入计划任务
自动部署软件
程序自动同步
被管理服务器资产收集
服务器状态检查
技术介绍
代替Vi编辑器的文件编辑
前端:Angulars javascript jQuery ngfileupload scrollbar uigrid typeahead cors Bootstrap
后端 : Django Redis Mysql Oracle SSH paramiko websocket crontab SFTP Cache
模块架构:
运行架构:
CheungSSH做为堡垒机角色,替代管理人员对众多服务器进行管理,解放运维管理员的双手,而且有相应的审计、权限管理功能
我先自问一句:“什么是自动化运维?” ,估计有人会说,一个强大的自动化运维工具。
为什么需要自动化?
相信在IT运维的朋友都知道,运维自动化是这两年才大批的提起自动化?由于云计算时代来了,公司的服务器规模空前庞大,之前一两百个机器的时候, 在管理上尚未以为有什么,现在, 上千台服务器,上万台服务器,出来了,如何有效的管理这些服务器?成为了每一个老板必须面对的问题!
由于服务器多了,公司人手不够,那么老板就不得不请更多的人,可是这样下来, 老板有一天发现了,这么请下去,不是办法啊,银子跟水同样哗哗流。因此目前,不少公司都在寻找第三方开发的自动化运维工具,好比puppet,ansible, saltstack等等。由于他们真的是想用这些工具的强大,来代替本身公司人力成本的支出。或者是本身公司请几个专业的运维开发自行开发一个运维系统。可是终究避不开一个问题---成本!
什么又是自动化呢?
我发现,有很多人还在认为,找一个功能很发达的工具,来管理公司的上千台服务器,并且还能很灵活的管理,这样就实现了自动化。在此,我要泼一瓢冷水!
那不叫自动化,由于即使选择某些功能很发的工具,可是也避不开一个问题----成本!由于学习某些工具,须要大量的时间,并且学习的人,还必须有必定的Linux基础,甚至是较好的Linux基础,因此他仍是没能把成本下降到最低,因此,这样的状况, 依然不叫自动化!
由于我以为请一个精通Linux的人,或者是一个比较熟悉Linux的人,成本都过高了,由于它不比请一个刚大学毕业的人成本更高!难道不是吗?可是,请一个大学刚刚毕业的人,有干不了这个事情啊,怎么办?
因此,我认为,在实现强大的功能管理的同事,还能最大限度的下降企业的营运成本,那才是我心目中的运维圣地------运维自动化!!!
CheungSSH为何要存在?
就像当年为何Docs不受欢迎?微软推出了图形操做界面后,比尔盖茨瞬间成为首富!这是为何?由于用户须要的是简单,再次简单!不须要学习的系统,才能真正的受欢迎,因此,只须要经过点击鼠标就能完成操做,这就是 CheungSSH追求的自动化与为工具!解放企业的生产力!让CheungSSH成为您的业务供应链的可靠后勤保障系统。
使用CheungSSH目的和带来的价值
实现运维全自动化,下降企业运营成本!是降到最低!使用CheungSSH,不须要再次学习shell操做,功能倒是完备的。
CheungSSH后续发展
作一个功能强大的系统,能结合监控,CMDB,自动化运维一体的系统,而且使用学习成本更低,真正作到运维自动化!
官方QQ群:445342415
官方微信群
捐助支付宝
[root@cheungssh tmp]# unzip CheungSSH-Master.zip
[root@cheungssh tmp]# cd CheungSSH-Master/bin/
[root@cheungssh bin]# sh install-CheungSSH.sh install #这是一键自动化安装,无需人工解决依赖等头疼问题,这是真正的运维自动化体现之一
舒适提示:建议您使用Yum联网安装依赖模块,本地安装须要手动安装依赖
更新
[root@cheungssh bin]# sh install-CheungSSH.sh update
舒适提示:
若是登陆次数联系超过5次,那么系统会锁定登陆IP一天时间。
首次登录后修改密码 http://您的IP地址:端口/cheungssh/admin/
普通配置
这里,咱们考虑的是,不须要被管理服务器作任何的配置, 哪怕是像某些工具须要SSH-key绑定同样, 在CheungSSH中, 彻底不须要,由于我要作的是简单,再简单!因此,在添加被管理服务器的时候,你只须要填写被管理服务器的登陆密码, 或者是SSH-key,就是你平时登陆服务器的方式,简单易懂!
因此, 我根本不须要多作介绍, 当你看到界面的时候,你一下就能明白!应该填写什么信息。请相信CheungSSH,咱们要作的,就是让用户感受简单!
高级配置
sudo登陆
您能够选择sudo为 ”是“ 表示执行命令的时候,是启用了sudo,而且在执行命令的时候不用输入sudo开头, 直接是命令, 好比本来是sudo ifconfig ,如今只须要 ifconfig,CheungSSH为您自动切换
![]()
su - root
您能够选择su为是; 表示执行命令的时候,是启用了su - root,而且在执行命令的时候不用输入su - root开头, 直接是命令, 好比本来是su - root后,执行 ifconfig ,如今只须要 ifconfig,CheungSSH为您自动切换
![]()
应用场景:执行一个whoami的命令,请记得,这个命令是在被管理的远程服务器上执行的
命令回显,功能区域介绍:
关于websocket: class WebSocketServer(object): def __init__(self): self.socket = None def begin(self): print( 'WebSocketServer Start!') self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) self.socket.bind(("0.0.0.0",1337)) self.socket.listen(50) global connectionlist while True: i=str(random.randint(90000000000000000000,99999999999999999999)) connection, address = self.socket.accept() print '客户端ip',address username=address[0] ie_key='connection'+i path="/" newSocket = WebSocket(connection,i,username,address,path,ie_key) newSocket.start() #开始线程,执行run函数 connectionlist[ie_key]=connection
应用场景:假如您现网有一万台服务器,那么本次您只想对其中的一千台服务器进行操做,那么您能够挑选出要执行任务的主机
应用场景:
加入今晚须要对一部分的主机在24:00的时候执行一些命令,用来收集服务器的信息,此时,您使用该功能就不用值夜了,交给CheungSSH的计划任务模块,那么您就能够安心睡大觉了
选择计划任务的时间 ,这里与Linux系统的 分 时 日 月 星期 一一对应:
确认计划任务的时间,能够看到这个时间格式跟Linux系统的如出一辙,没错,咱们就是把它作成了操做系统的crontab功能:
![]()
![]()
CheungSSH计划任务查看
操做系统计划任务查看
[root@cheungssh bin]# crontab -l
*/1 */1 */1 */1 */1 /home/cheungssh/mysite/mysite/cheungssh/daemon_FileTransfer.py '{"status": "\u672a\u542f\u52a8", "lasttime": "2015-10-25 18:45:20", "cmd": "", "createtime": "2015-10-25 18:45:20", "sfile": "/var/log", "user": "bo", "fid": "92262569677243366214", "runtype": "download", "runtime": "*/1 */1 */1 */1 */1", "id": "99556469106"}' #92262569677243366214
*/1 */1 */1 */1 */1 /home/cheungssh/bin/cheungssh_web.py 94246137977316460425
*/1 */1 */1 */1 */1 /home/cheungssh/bin/cheungssh_web.py 91254503983769069002
[root@cheungssh bin]#
提示:
CheungSSH仍是为了用户考虑,经过以上的计划任务, 您可能知道怎么用, 可是对于计划任务的结果, 运行流程,是感受不清晰的,在这里,我想我有必要向您解释一下,仍是那句话, CheungSSH要作到的是,让用户感受简单,而且要真正让用户使用起来简单,因此这个计划任务的原理上是:在CheungSSH控制机器上作的计划任务,并无在被管理的服务器上作计划任务,这样,就能为您下降更多运营成本,重要的是,还不变更您的被管理机器,再一次作到稳定!下降复杂度!
文件传输记录
应用场景:对于全部的上传 下载文件的记录 咱们都作了记录,下面是传输的记录:
文件下载
应用场景:在远程被管理的服务器上有一个文件,此时若是您须要获取文件内容,那么您可使用咱们的下载功能,把远程服务器上的文件下载到CheungSSH服务器上,而后从CheungSSH服务器再下载到您的本地电脑PC机器上,而后神奇的是,这一切过程,都是自动的!
友情提示:不只支持文件下载,还支持目录下载哦!
![]()
![]()
从远程服务器下载文件到CheungSSH上之后,自动弹出下载成功的文件,而且显示没有下载成功的文件:
![]()
从CheungSSH上下载刚才从远程服务器上下载的文件到您的本地电脑上:
文件上传
应用场景:假如您须要更新或者上传一些文件到被管理服务器上,那么这里您可使用上传功能:
![]()
文件上传和下载 都有进度显示的哦!
![]()
其实咱们利用的就是paramiko的SFTP函数实现的: def UpdateFile(ip,port,username,password,UseKey,sfile,dfile): try: t=paramiko.Transport((ip,port)) if UseKey=="Y": KeyPath=os.path.expanduser('~/.ssh/id_rsa') key=paramiko.RSAKey.from_private_key_file(KeyPath) t.connect(username = username,pkey=key) else: t.connect(username = username,password = password) sftp = paramiko.SFTPClient.from_transport(t) ret=sftp.put(sfile,dfile)
舒适提示:您依然能够上传一个文件夹的哦!
执行脚本
开放API
主机信息API
服务器运行日志API
服务器状态检查API
文件传输API
命令执行API
资产信息API
计划任务API
更多API .....
更多功能
脚本执行
计划任务
权限审计
权限受权
安全设置
更多功能...
还有堡垒机角色...
这里不作一一介绍,当您看见了CheungSSH Web界面的时候,不须要我多作介绍了,您一眼就能看明白,这个东西应该怎么用!由于咱们坚持作到简约!更简约!目前有800个单位和用户,他们不多问我这个功能如何使用,都是一看就明白!