我正在寻找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
详细信息
编辑:对于未来的读者 - 这是错误的答案,请参阅评论。