ip 路由保存二进制还是ascii?

ip 路由保存二进制还是ascii?

根据ip-route(8)

ip Route save
将路由表信息保存到 stdout 该命令的行为类似于 ip Route show,不同之处在于输出是适合传递给 ip Route Restore 的原始数据。

ip Route Restore
从标准输入恢复路由表信息 此命令期望读取从 ip Route Save 返回的数据流。它将尝试将路由表信息完全恢复为保存时的状态,因此必须首先完成流中信息的任何转换(例如设备索引)。任何现有路线均保持不变。表中已存在的数据流中指定的任何路由都将被忽略。

但是当我使用时ip route save > mydump,它返回二进制,与手册页不同,这是一个错误吗?还是我用错了?

答案1

它是二进制的。一个明确的指标是它不允许您将二进制数据转储到标准输出,并带有错误消息:

# ip route save
Not sending binary stream to stdout
Dump terminated

答案2

如果你想转储你的RT,请考虑ip route save提供stdout和stderr,所以你必须使用:

ip route save 1> dump

如果不使用1>ip 命令,请将 stderr 和 stdout 重定向到转储。
注意:如果您的转储中有默认网关,请手动添加其网络,例如:

ip route add 192.168.1.0/24 dev eth0

然后 :

ip route restore < dump

但为什么用手呢?因为转储的第一行是 dafualt gw,并且您会收到以下错误:

RTNETLINK answers: Network is unreachable

答案3

的格式ip route save是二进制的,但对于 Linux,它与rtnetlink(7)。有很多工具可以读取/写入/操作此文件,其中之一是 Pythonpyroute2

相关内容