我正在编写一个脚本来从 BusyBox v1.25.1/Linux 2.6.36/router 中提取信息,用户可以在其中简单地运行脚本并将输出复制/粘贴到提交表单中以请求支持。该脚本本质上是一个命令列表,如route
、ifconfig
等。由于busybox 的含义,我仅限于/bin/sh。
我正在尝试找到一种智能方法来仅从输出中自动屏蔽所有公共 IP 地址。替换完整的 IP 已经很好了,但是如果可能的话,我会在每个命令(甚至是内部函数)的末尾寻找一个管道命令来简单地替换前两个八位字节
80.80.80.80
,
例如XX.XX.80.80
一个不错的功能是替换相同数量的数字以尽可能保留格式。例如
8.8.8.8=X.X.X.X
80.80.8.8=XX.XX.X.X
180.180.80.8=XXX.XXX.XX.X
实际例子:
root@router:/proc# route | filtering-goes-here
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
XX.XX.168.1 * 255.255.255.255 UH 0 0 0 vlan2
172.16.9.0 * 255.255.255.0 U 0 0 0 br1
10.10.9.0 * 255.255.255.0 U 0 0 0 br0
10.114.126.0 * 255.255.254.0 U 0 0 0 tun11
XX.XX.168.0 * 255.255.252.0 U 0 0 0 vlan2
10.10.0.0 * 255.255.0.0 U 0 0 0 tinc
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default cpc86269 0.0.0.0 UG 0 0 0 vlan2
谢谢!!
像这样的
sed
脚本对您有用吗?这是一个示例运行,
这会将表单的所有 IP 地址转换
a.b.c.d
为等效宽度x.x.x.x
模式。如果您需要跳过某些 IP 地址,则这些 IP 地址需要脚本中的排除规则。如果该
___
模式是此处使用的上下文中可能输出的一部分,则需要更改为脚本输入中不可能的不同“上下文”。更新:对于公共 IP 掩码
尝试使用此
sed
脚本替换上述基本脚本。注意:这也将
x
排除网络掩码,但有一个例外。我没有添加240.0.0.0
到列表中。更新 2:如果您只想屏蔽每行上的第一个 IP 地址
这是针对
route
第一列是 IP 地址的输出情况。将更新脚本中的第一行替换为,
sed
根据 OPs 的建议,在这里也留下 mask-for-private-IPs 脚本