首页 > Web开发 > 详细

django linux端脚本 web 可视化

时间:2020-04-08 17:04:04      阅读:71      评论:0      收藏:0      [点我收藏+]

1、安装

Django     # 大于2.0,小于2.1.5
dwebsocket
paramiko

2、视图

from dwebsocket.decorators import accept_websocket
import paramiko

 

@accept_websocket
def show_log(request):
    # 判断是不是websocket连接
    if not request.is_websocket():
        # 如果是普通的http方法
        try:
            message = request.GET[message]
            return HttpResponse(message)
        except:
            return render(request, show_log.html)
    else:
        for message in request.websocket:
            # 接收前端发来的数据
            message = message.decode(utf-8)
            print(message)
            # 这里根据web页面获取的值进行对应的操作
            if message == backup_all:
                # 这里是要执行的命令或者脚本
                command = bash /home/lezhu/projects/ACG/test.sh
                # 远程连接服务器
                ssh = paramiko.SSHClient()
                ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
                ssh.connect(hostname=config.host_name, username=config.username, password=config.password)
                # 务必要加上get_pty=True,否则执行命令会没有权限
                stdin, stdout, stderr = ssh.exec_command(command, get_pty=True)
                # 循环发送消息给前端页面
                while True:
                    # 读取脚本输出内容
                    next_line = stdout.readline().strip()
                    # 发送消息到客户端
                    request.websocket.send(next_line.encode(utf-8))
                    # 判断消息为空时,退出循环
                    if not next_line:
                        break
                # 关闭ssh连接
                ssh.close()
            else:
                request.websocket.send(小样儿,没权限!!!.encode(utf-8))

3、路由 省略

4、模板(前段)

{% extends base.html %}

{% block content %}
    <button style="margin: 20px;height: 40px;background-color: #337ab7; border-color: #2e6da4;" type="button" id="backup_all"
            value="backup_all">
        查看日志
    </button>

    <h3 style="margin: 20px;">脚本执行结果:</h3>

    <div id="messagecontainer" style="margin: 20px;">
    </div>
    <hr/>
{% endblock %}

{% block my_script %}
    <script type="text/javascript">
        $(function () {
            $(#backup_all).click(function () {
                var socket = new WebSocket("ws://" + window.location.host + "/show_log/");
                console.log(socket);
                socket.onopen = function () {
                    {#console.log(‘WebSocket open‘); //成功连接上Websocket#}
                    socket.send($(#backup_all).val()); //发送数据到服务端
                };
                socket.onmessage = function (e) {
                    {#console.log(‘message: ‘ + e.data);//打印服务端返回的数据#}
                    $(#messagecontainer).append(e.data + <br/>);

                };
            });
        });
    </script>
{% endblock %}

 

django linux端脚本 web 可视化

原文:https://www.cnblogs.com/wt7018/p/12660418.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!