lgq
2025-07-12 478a6e251361cf00ea18c08a453b0c8caaa9ef6f
修改SNMP导出OID表格,增加设备类型列
已修改4个文件
已添加1个文件
166 ■■■■ 文件已修改
local/bin/export.sh 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
local/bin/snmp_cfg 补丁 | 查看 | 原始文档 | blame | 历史
local/bin/snmp_val.sh 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
local/www/cgi-bin/snmp/query_oid 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
local/www/sys-snmp-conf.html 115 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
local/bin/export.sh
@@ -1,7 +1,7 @@
#!/bin/sh
sqlite3 /work/iot_cfg.db ".headers on " "select d.name as è®¾å¤‡åç§°,'1.3.6.1.4.1.27116.'||d.id||'.'||a.passcode as OID, d.id as è®¾å¤‡ID, a.passcode as é€šé“号, a.name as æ•°æ®åç§°,a.note as å¤‡æ³¨  from device d left join accuracy a on d.id=a.id   where uploadFlag=0" > /tmp/oid_list.csv
sqlite3 /work/iot_cfg.db "SELECT     name as è®¾å¤‡åç§°, '1.3.6.1.4.1.27116.'||id||'.3' as OID, id as è®¾å¤‡ID, 3 as é€šé“号 , '状态' as æ•°æ®åç§°, '0-正常;1-告警' as å¤‡æ³¨   FROM ioDevice ;" >> /tmp/oid_list.csv
sqlite3 /work/iot_cfg.db ".headers on " "select d.name as è®¾å¤‡åç§°,'1.3.6.1.4.1.27116.'||d.id||'.'||a.passcode as OID, d.id as è®¾å¤‡ID, d.type as è®¾å¤‡ç±»åž‹, a.passcode as é€šé“号, a.name as æ•°æ®åç§°,a.note as å¤‡æ³¨  from device d left join accuracy a on d.id=a.id   where uploadFlag=0" > /tmp/oid_list.csv
sqlite3 /work/iot_cfg.db "SELECT     name as è®¾å¤‡åç§°, '1.3.6.1.4.1.27116.'||id||'.3' as OID, id as è®¾å¤‡ID, type as è®¾å¤‡ç±»åž‹, 3 as é€šé“号 , '状态' as æ•°æ®åç§°, '0-正常;1-告警' as å¤‡æ³¨  FROM ioDevice ;" >> /tmp/oid_list.csv
sed -i 's/|/,/g' /tmp/oid_list.csv
local/bin/snmp_cfg
Binary files differ
local/bin/snmp_val.sh
@@ -5,7 +5,7 @@
# èŽ·å–ä¼ å…¥çš„ OID
OID="$1"
jsoner=/usr/sbin/jsoner
jsoner=./jsoner
#echo "脚本被调用, OID: $OID"
chn=${OID##*.}
@@ -23,11 +23,11 @@
if [ $ret -eq 0 ]
then 
    RESPONSE="{\"type\": \"OctetString\", \"value\": \"$val\" }"
    RESPONSE="{\"dataType\": \"OctetString\", \"value\": \"$val\" }"
    echo "$RESPONSE"
else 
    # é»˜è®¤è¿”回
    RESPONSE="{\"type\": \"OctetString\", \"value\": \"noData\"}"
    RESPONSE="{\"dataType\": \"OctetString\", \"value\": \"noData\"}"
    echo "$RESPONSE"
fi
local/www/cgi-bin/snmp/query_oid
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
#!/bin/sh
#SNMP模组状态查询
export PATH=/sbin:/usr/sbin:$PATH
echo -en "Content-type: text/html; charset=utf-8\n\n"
#*****************************************************
source ../bin/env.sh
db="../bin/db"
file="/tmp/oid_list.csv"
/usr/local/bin/export.sh  >> /dev/null
awk -F ',' '
BEGIN {
    print "["
}
NR > 1 && $0 != "" {  # è·³è¿‡é¦–行标题(如有)和空行
    printf "  {\n"
    printf "    \"device\": \"%s\",\n", $1
    printf "    \"oid\": \"%s\",\n", $2
    printf "    \"index1\": %d,\n", $3
    printf "    \"type\": %d,\n", $4
    printf "    \"index2\": %d,\n", $5
    printf "    \"param\": \"%s\"", $6
    # å¤„理单位字段(第6列)
    if (NF >= 7 && $7 != "") {
        printf ",\n    \"unit\": \"%s\"\n", $7
    } else {
        printf "\n"
    }
    # åˆ¤æ–­æ˜¯å¦ä¸ºæœ€åŽä¸€è¡Œ
    if (NR == last_line) {
        printf "  }\n"
    } else {
        printf "  },\n"
    }
}
END {
    print "]"
}
' last_line=$(wc -l < $file) $file
local/www/sys-snmp-conf.html
@@ -25,12 +25,33 @@
        .btns button{
            width: 120px;
        }
        @media only screen and (max-width:1080px) and (max-height: 1920px){
            .i-container {
                min-width: 750px;
                height: 100%;
                overflow-y: scroll;
            }
            /** éšè—åˆ—表下拉滚动条 **/
            .div-body::-webkit-scrollbar {
                display: none;
            }
            /*IE 10+ ----隐藏滚动条*/
            .div-body {
                -ms-overflow-style: none;
            }
            /*Firefox ----隐藏滚动条*/
            .div-body {
                scrollbar-width: none;
            }
            .pdgxq-m1-left{
                height: 1400px;
            }
        }
    </style>
</head>
<body class="pdgxq-body">
    <div class="i-container">
    <div class="i-container div-body">
        <div class="jmkt-main">
            <div class="layui-fluid">
                <div class="pdgxq-m1 layui-row layui-col-space20">
@@ -42,7 +63,7 @@
                                    <div class="layui-col-md4">
                                        <div class="layui-inline" style="margin-left: -16%">
                                            <label class="layui-form-label">SNMP功能:</label>
                                            <label class="layui-form-label">SNMP模组:</label>
                                            <div class="layui-input-block">
                                                <input type="checkbox" id="enable" name="enable" lay-skin="switch"
                                                       lay-filter="switch" lay-text="启用|停用">
@@ -105,6 +126,11 @@
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script src="plugins/layui/layui.js"></script>
    <script src="js/constant.js"></script>
    <script src="plugins/external/jszip.min.js"></script>
    <script src="plugins/external/FileSaver.js"></script>
    <script src="plugins/external/excel-gen.js"></script>
    <script type="text/javascript">
        var layer;// å®šä¹‰å…¨å±€å˜é‡
@@ -146,8 +172,7 @@
            var obj = {"enable":enable};
            $.post("./cgi-bin/snmp/enable", JSON.stringify(obj), function (data, status) {
                if (data.code == "success") {
                    //window.parent.parent.notify("数据保存成功");
                    window.parent.parent.notify("SNMP模组状态保存成功");
                    window.parent.parent.notify("数据保存成功");
                } else {
                    window.parent.parent.notify("数据保存出错,请重新操作!"+data.msg+"!");
                }
@@ -157,34 +182,70 @@
        //导出
        function downLoadF() {
            $.ajaxSettings.async = false;
            $.get("./cgi-bin/snmp/download", function (data, status) {
                if ("success" == data.code) {
                    downLoadF2();
                }else{
                    window.parent.parent.notify("生成oid表出错");
                }
            $.get("./cgi-bin/snmp/query_oid", function (data, status) {
                renderHtml(data);
                // if ("success" == data.code) {
                //     renderHtml(data);
                // }else{
                //     window.parent.parent.notify("生成oid表出错");
                // }
            }, "json");
        }
        
        function downLoadF2() {
            var fileName = "oid_list.csv";
            var url = "./cgi-bin/download/download.cgi?filename=/tmp/oid_list.csv";
        function renderHtml(data) {
            console.log(data);
            // å¯¹äºŽ<a>标签,只有 Firefox å’Œ Chrome(内核) æ”¯æŒ download å±žæ€§
            if ('download' in document.createElement('a')) { // æ”¯æŒa标签download的浏览器
                var link = document.createElement('a'); // åˆ›å»ºa标签
                link.download = fileName;// a标签添加属性
                link.style.display = 'none';
                // link.href = URL.createObjectURL(blob);
                link.href = url;
                document.body.appendChild(link);
                link.click(); // æ‰§è¡Œä¸‹è½½
                URL.revokeObjectURL(link.href); // é‡Šæ”¾url
                document.body.removeChild(link); // é‡Šæ”¾æ ‡ç­¾
            } else { // å…¶ä»–浏览器
                navigator.msSaveBlob(url, fileName);
            var thead = "";
            thead += "<thead><tr>";
            thead += "<th>设备名称</th>";
            thead += "<th>OID</th>";
            thead += "<th>设备ID</th>";
            thead += "<th>设备类型</th>";
            thead += "<th>通道号</th>";
            thead += "<th>数据名称</th>";
            thead += "<th>备注</th>";
            thead += "</tr></thead>";
            var tbody = "";
            if (data != null && data.length > 0) {
                $.each(data, function (index, item) {
                    tbody += "<tr><td>" + item.device + "</td>";
                    tbody += "<td>" + item.oid + "</td>";
                    tbody += "<td>" + item.index1 + "</td>";
                    tbody += "<td>" + item.type + "</td>";
                    tbody += "<td>" + item.index2 + "</td>";
                    tbody += "<td>" + item.param + "</td>";
                    tbody += "<td>" + (item.unit ?? "") + "</td></tr>";
                });
            }else {
                tbody += '<tr><td colspan="8">暂未创建设备</td></tr>';
            }
            var html = thead + tbody;
            tableToExcel(html);
        }
        function tableToExcel(html) {
            var name = "告警记录";
            var uri = 'data:application/vnd.ms-excel;base64,';
            var template = '<html><head><meta charset="UTF-8"></head><body><table border="1">{table}</table></body></html>';
            if(!html){
                layer.msg("没有获取到要导出的内容!");
            }
            var ctx = {worksheet: name || 'Worksheet', table: html};
            window.location.href = uri + base64(format(template, ctx))
        }
        function format(s, c) {
            return s.replace(/{(\w+)}/g,function(m, p) { return c[p]; });
        }
        function base64(s) {
            return window.btoa(unescape(encodeURIComponent(s)))
};
    </script>
</body>
</html>