ifconfig interface ip_address 相当于 ip 命令吗?

ifconfig interface ip_address 相当于 ip 命令吗?

我正在寻找ifconfig <interface> <ip_address>使用 ip 命令的精确替换命令。

例如,如果我想将 eth0 的 IP 地址更改为 10.0.0.1(不关心网络掩码),我只需输入:

ifconfig eth0 10.0.0.1

不过,对于 ip 命令,我查看了很多,发现只是添加或删除网络,而不是修改当前网络。因此,要修改当前网络,我最终不得不使用以下(或类似)脚本:

new_ip=$1
ip_addr=`ip addr show eth0 | grep "inet" | cut -d: -f2 | awk '{print $2}'`

ip -4 addr delete $ip_addr dev eth0
ip -4 addr add $new_ip dev eth0

因为如果我不这样做,当稍后删除主接口 IP 时,它会带走所有辅助 IP 地址。

我在程序内部执行此操作,但这里有太多可能出错的系统调用。有没有办法不用使用那么多命令就可以做到这一点?

ip addr change并且ip addr replace还做同样的事情: 在此处输入图片描述

注意:我可以根据需要将任何开源程序添加到系统中。因此,不要回避使用其他开源程序的解决方案。

答案1

ip addr change ...就是你要找的。

查看ip addr help详细信息

编辑:对于未来的读者 - 这是错误的答案,请参阅评论。

相关内容