Mikrotik-var为空时脚本作业的结果

问题描述

我现在需要从Zabbix的命令输出获取有关LTE / 3G连接的一些信息。 Routerboard是6.47.7版本。

    [admin@Mikrotik_24] > interface lte info lte1 once 
           pin-status: ok
  registration-status: registered
        functionality: full
         manufacturer: "MikroTik"
                model: "R11e-LTE"
             revision: "MikroTik_CP_2.160.000_v008"
     current-operator: MTS
                  psc: 295
                  lac: 5205
       current-cellid: 241903616
    access-technology: 3G
       session-uptime: 21h3m18s
                 imei: 355654090621868
                 imsi: 250016652966098
                 uicc: 89701011266529660988
               earfcn: 10762
                 ecno: 0dB
                 RSSi: -95dBm

例如“ RSSi”,“访问技术”,“ uicc”等。

此类命令的问题由他们自己描述-数据无限传播,您无法轻松掌握。 https://wiki.mikrotik.com/wiki/Manual:Scripting_Tips_and_Tricks#Get_values_from_looped_interactive_commands_like_.22monitor.22

所以我有一个脚本来获取一些作为全局变量的值。

/interface lte info lte1 once do={:global at $"access-technology" }

和终端中的“:put $ at”可以正常工作。但是我认为通过执行另一个脚本来显示生成的var $ at来获取SNMP的结果。他们使用OID可能是出于“脚本结果”的目的。 问题是如何在脚本中输出此var?

    [admin@Mikrotik_24] > /system script export compact 
# oct/31/2020 01:52:57 by RouterOS 6.47.7
# software id = PW8X-NNQ5
#
# model = RouterBOARD wAP R-2nD
/system script
add dont-require-permissions=no name=at owner=admin policy=\
    ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\
    "/interface lte info lte1 once do={:global at \$\"access-technology\" } \r\
    \n"
add dont-require-permissions=no name=at_result owner=admin policy=\
    ftp,romon source=":put \$at"


    [admin@Mikrotik_24] > :environment print   
at="3G"

[admin@Mikrotik_24] > /system script environment print 
 # NAME               VALUE                                                                
 0 at                 3G                                                                   
[admin@Mikrotik_24] > /system script run at_result     

[admin@Mikrotik_24] > 

您看到,/ system脚本运行在at_result为空,但是在终端中我可以看到它

[admin@Mikrotik_24] > :put $at
3G
[admin@Mikrotik_24] > 

解决方法

好的。脚本var的正确形式是

expressApp.post('/delete',function (request,response) {

    const id = request.body.id;
    console.log(id)

        MongoClient.connect(url,function (err,db) {

            if (err) throw err;
            let dbo = db.db(dbName);

            dbo.collection("Members").deleteOne({"_id": objectId(id)},res) {
                if (err) throw err;
                db.close();
            });
        });
    response.redirect('/agileApp');
    });


t: function (index) {
            fetch(membersUrl).then(function(response) {
                return response.json();
            }).then(function (data) {
                const formData = new FormData();
                formData.append("id",data[index]._id);
                for (var pair of formData.entries()) {
                    console.log(pair[0]+ ',' + pair[1]);
                }

                fetch(deleteUrl,{
                    method: 'POST',body: formData
                })
            })
        }

我必须先声明它。