Что эквивалент ifconfig является интерфейсом ip_address для IP команды?

Я ищу точную замену 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 также делает то же самое: enter image description here

Примечание: Я могу добавить любую программу с открытым исходным кодом в систему, как я хочу. Так, не уклоняйтесь от решений, которые используют другие программы с открытым исходным кодом.

0
задан 31 July 2018 в 00:02

1 ответ

ip addr change ... то, что Вы ищете.

сделать ip addr help видеть детали

Править: Для будущих читателей - это - неправильный ответ, см. комментарии.

0
ответ дан 28 October 2019 в 06:08

Другие вопросы по тегам:

Похожие вопросы: