使用web ssh 登陆设备---gateone开发之旅

前言:


gateone是一个非常强大的web 开源终端(Gate One is an HTML5 web-based terminal emulator and SSH client.)。 


目前这个项目在github有3614个stars, 439个fork, 26个贡献者, 可见其受欢迎程度。


项目的github地址: https://github.com/liftoff/GateOne 


gateone文档: http://liftoff.github.io/GateOne/ 


我们的项目基于gateone做了一些应用和开发,写这个文章的目的是想和大家一起分享和交流下经验。


需求:


开发一个界面, 可以通过这个界面来登陆设备,即web ssh。


关闭页面后(但是没有logout),下次打开还能回到上次登陆的状态。


环境:

ubuntu 12.04

python 2.7.6

django 1.7.3

Gateone 1.2




实现:


HTML 代码


JS代码


    


Python代码


#  django urls.py

("/get_auto_obj, views.generate_gate_one_auth_obj")

#  python 代码  ,api认证方式, django views

def generate_gate_one_auth_obj(request):

    import time, hmac, hashlib, json

    user = request.user.username

    gateone_server = GATEONE_SERVER  // 替换成对应的部署gateone的server的ip地址

    secret = GATEONE_API_SECRET  // 替换成对应的api secret ,该信息 存放在gateone的配置文件30api.conf中

    api_key = GATEONE_API_KEY  // 替换成对应的api key ,该信息 存放在gateone的配置文件30api.conf中

    authobj = {

        'api_key': api_key,

        'upn': user,

        'timestamp': str(int(time.time() * 1000)),

        'signature_method': 'HMAC-SHA1',

        'api_version': '1.0'

    }

    my_hash = hmac.new(secret, digestmod=hashlib.sha1)

    my_hash.update(authobj['api_key'] + authobj['upn'] + authobj['timestamp'])

    authobj['signature'] = my_hash.hexdigest()

    auth_info_and_server = {"url": gateone_server, "auth": authobj}

    valid_json_auth_info = json.dumps(auth_info_and_server)

    return HttpResponse(valid_json_auth_info)


其实使用gateone还有许多新的玩法, 比如结合sso登陆,pam验证登陆, google验证登陆, 还有 登陆自动执行脚本, log 喷到es等等,以后再慢慢讲。 gateone还提供了很详细的文档,包括使用文档和开发文档。gateone支持插件开发, 它提供了丰富的api, 只要你的开发能力够强, 你能基于gateone开发出非常强大的工具。


hackstoic 2015-12-26 整理




如果有任何问题,欢迎交流~~~~博客下留言或者email给我 hackstoic#163.com(将#换成@)







你可能感兴趣的:(Python,DevOps,前端开发)