我正在研究 Linux 商业路由器之间的 vxlan 隧道。我需要调试一些界面设置。
该命令sudo ip -d link show DEV
为我提供了很好的输出,但输出格式就像下面的长单行。
katabey@leaf-1:mgmt:~$ sudo ip -d link show vxlan_10
11: vxlan_10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9216 qdisc noqueue master bridge state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 52:6d:3d:aa:b5:bf brd ff:ff:ff:ff:ff:ff promiscuity 1 minmtu 68 maxmtu 65535
vxlan id 10010 local 10.1.1.1 srcport 0 0 dstport 4789 nolearning ttl 64 ageing 300 udpcsum noudp6zerocsumtx noudp6zerocsumrx
bridge_slave state forwarding priority 8 cost 100 hairpin off guard off root_block off fastleave off learning off flood on port_id 0x8002 port_no 0x2 designated_port 32770 designated_cost 0 designated_bridge 8000.50:0:0:3:0:3 designated_root 8000.50:0:0:3:0:3 hold_timer 0.00 message_age_timer 0.00 forward_delay_timer 0.00 topology_change_ack 0 config_pending 0 proxy_arp off proxy_arp_wifi off mcast_router 1 mcast_fast_leave off mcast_flood on neigh_suppress on group_fwd_mask 0x0 group_fwd_mask_str 0x0 group_fwd_maskhi 0x0 group_fwd_maskhi_str 0x0 vlan_tunnel off isolated off addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
如果有这样的输出就太好了
vxlan id 10010
local 10.1.1.1
srcport 0
dstport 4789
我记得几年前,我曾与 Linux 系统工程师一起工作,command | python ...
但我无法找到/回忆起该命令。 (我已经安装了Python)。
欢迎任何其他解决方案(尤其是单衬管)。
答案1
尝试:
your-command |grep -Eo '(vxlan id|srcport|dstport) [0-9]+|local [0-9.]+'
答案2
fmt
这听起来像是coreutils 一部分的命令的工作。
特别是,您会想要使用
-s
,--split-only
分割长线,但不要重新填充
答案3
如果您的实现ip
支持--json
输出格式开关,那么我建议类似
sudo ip -d link show vxlan_10 | jq -r '.[] | to_entries[] | "\(.key) \(.value)"'
前任。 (我没有 VLAN 接口,因此这显示了常规无线接口):
$ ip --json link show wls1 | jq -r '.[] | to_entries[] | "\(.key) \(.value)"'
ifindex 3
ifname wls1
flags ["BROADCAST","MULTICAST","UP","LOWER_UP"]
mtu 1500
qdisc mq
operstate UP
linkmode DORMANT
group default
txqlen 1000
link_type ether
address 00:21:6a:96:40:12
broadcast ff:ff:ff:ff:ff:ff