Я ищу точную замену ifconfig <interface> <ip_address>
команда с помощью IP команды.
Например, если я хочу изменить IP-адрес eth0 на 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
также делает то же самое:
Примечание: Я могу добавить любую программу с открытым исходным кодом в систему, как я хочу. Так, не уклоняйтесь от решений, которые используют другие программы с открытым исходным кодом.
ip addr change ...
то, что Вы ищете.
сделать ip addr help
видеть детали
Править: Для будущих читателей - это - неправильный ответ, см. комментарии.