(Mikrotik 脚本)。如何设置我们想要的唯一列的编码“/print”?

(Mikrotik Script). How to set coding "/print" only column we want?

我们需要来自我的 Router 的一些信息,表明我的设备已经激活。 有时我们必须 ping(macaddress 的设备)而不是 ip,因为它是动态的。

所以我们像导出一样创建文件然后比较它们。现在,当我们只想打印文件的特定列时,我们遇到了这样的麻烦

/print ip arp .......

任何人都可以帮助这些或任何方法?

/print ip arp file=someip.txt 

/print ip arp (only column we want) file=someip.txt

首先,也许你可以为你想要的东西设置一个静态IP。如果您使用的是 DHCP,则可以使用 /ip dhcp-server lease add ... 添加静态租约。而且您不需要编写任何脚本。

Mikrotik 也有一个 API (https://wiki.mikrotik.com/wiki/Manual:API) 有一些语言的绑定。您可以搜索 Mikrotik API .

最后一个很简单并且对某些场景来说可能足够的肮脏的 hack 是 SSH 路由器并使用你的 shell 过滤输出(如果你使用的是类似 unix 的环境)

ssh YOUR-DEVICE /ip arp print where mac-address=11:22:33:44:55:66 \
                | grep 11:22:33:44:55:66 | awk '{ print  }'

这将通过 ssh 进入设备并使用 mac 11:22:33:44:55:66.

获取设备的 IP 地址(第 3 列)

命令的第一行在 Mikrotik 上执行,在您的 unix 环境中使用 grep 和 awk 的管道具有您 shell.

的所有功能

如果您将 SSH 密钥复制到设备,该命令将不需要密码。

我建议将参数提取到@bmiro 解决方案,并将 grep 折叠成 awk

macId=11:22:33:44:55:66
ssh YOUR-DEVICE /ip arp print where mac-address=${macId} | awk "/${macId}/"'{ print  }'