把 ip route 的输出切成表

👁️ 3 人浏览 💬 0 人评论 ❤️ 添加收藏

parse_line 把一行 ip route 切成 (前缀, 下一跳, 接口, 度量)。看四行切出来的前缀和下一跳:

IPROUTE = """default via 192.168.10.1 dev eth0 proto static metric 100
10.0.0.0/8 via 192.168.10.254 dev eth0 metric 100
10.20.0.0/16 via 192.168.10.253 dev eth0 metric 100
192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.5"""

def parse_line(line):
    w = line.split()
    cidr = "0.0.0.0/0" if w[0] == "default" else w[0]
    via = w[w.index("via") + 1] if "via" in w else None
    dev = w[w.index("dev") + 1]
    metric = int(w[w.index("metric") + 1]) if "metric" in w else 0
    return (cidr, via, dev, metric)


def parse_table(text):
    return [parse_line(l) for l in text.strip().split("\n")]

t = parse_table(IPROUTE)
print(str(len(t)) + "/" + ",".join(r[0] + "→" + str(r[1]) for r in t))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论