linux ip addr命令,linux – 理解“ip addr change”和“ip addr replace”命令

(我意识到这是一个古老的问题,但谷歌把我带到了这里,因为我试图找出确切的变化和替换以及它们如何不同).

我相信替换和更改都用于修改现有地址.考虑:

ip addr add 192.168.1.10/32 dev dummy0

这让我:

32: dummy0: mtu 1500 qdisc noqueue state UNKNOWN group default

link/ether 5a:ec:58:4f:d1:35 brd ff:ff:ff:ff:ff:ff

inet 192.168.111.10/32 scope global dummy0

valid_lft forever preferred_lft forever

inet6 fe80::58ec:58ff:fe4f:d135/64 scope link

valid_lft forever preferred_lft forever

如果我再次运行相同的命令,我会收到一个错误:

# ip addr add 192.168.111.10/32 dev dummy0

RTNETLINK answers: File exists

如果我想修改该地址上的标志,我可以使用更改或替换.在这里,我使用ip addr更改来修改该地址上的preferred_lft和valid_lft设置:

# ip addr change 192.168.111.10/32 dev dummy0 preferred_lft 300 valid_lft 300

# ip addr show dummy0

32: dummy0: mtu 1500 qdisc noqueue state UNKNOWN group default

link/ether 5a:ec:58:4f:d1:35 brd ff:ff:ff:ff:ff:ff

inet 192.168.111.10/32 scope global dynamic dummy0

valid_lft 298sec preferred_lft 298sec

inet6 fe80::58ec:58ff:fe4f:d135/64 scope link

valid_lft forever preferred_lft forever

ip addr replace的行为是相同的.实际上,如果查看代码,它们会导致几乎相同的操作:

if (matches(*argv,"change") == 0 ||

strcmp(*argv,"chg") == 0)

return ipaddr_modify(RTM_NEWADDR,NLM_F_REPLACE,argc-1,argv+1);

if (matches(*argv,"replace") == 0)

return ipaddr_modify(RTM_NEWADDR,NLM_F_CREATE|NLM_F_REPLACE,argv+1);

看起来这里的意图是更改将仅修改现有地址,而替换将修改现有地址或如果指定的地址不存在则创建新地址.在实践中,似乎更改和替换将添加地址(如果它尚不存在).

如果你真的想要添加一个新地址并删除一个旧地址,你需要分两步完成,使用ip addr del,然后是ip addr add(当然,反过来).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值