Как установить статический IP через скрипт на Ubuntu 18.04?

В дополнение к ответу @muru, вот часть исходного кода, которая вычисляет width для правильного выравнивания вывода. :

static void
format_user_or_group (char const *name, unsigned long int id, int width)
{
  size_t len;

  if (name)
    {
      int width_gap = width - mbswidth (name, 0);
      int pad = MAX (0, width_gap);
      fputs (name, stdout);
      len = strlen (name) + pad;

      do
        putchar (' ');
      while (pad--);
    }
  else
    {
      printf ("%*lu ", width, id);
      len = width;
    }

  dired_pos += len + 1;
}

Используется, printf ("%*lu ", width, id);. ПРИМЕЧАНИЕ: спецификатор ширины поля переменной '*'

В этом случае нельзя предсказать, насколько велика ширина поля, в которой мы будем нуждаться, когда ls -l выполняется, то есть имена каталогов могут различаться по длине. Это означает, что сама ширина поля должна быть ПРИМЕЧАНИЕ: , для которой программа будет вычислять значение.

C использует программу , вычисленное значение в позиции спецификатора ширины поля, чтобы указать printf, что он найдет переменную, которая содержит значение ширины поля в качестве дополнительного параметра.

Например, предположим, что текущее значение ширины равно 5. Инструкция:

printf ("%*d%*d\n", width, 10, width, 11);

будет печатать: (обратите внимание на интервал)

   10   11
0
задан 17 May 2018 в 00:25

4 ответа

18.04 использовать netplan. Посмотрите на свою страницу man

. Вы можете сделать свой сценарий записью файла .yaml в /etc/netplan и «скомпилировать» его с помощью netplan apply или netplan try или netplan generate

Одним из примеров такого файла будет:

ethernets: match: name: enp2s0 addresses: [10.0.4.5/8] gateway4: 10.0.4.1 nameservers: addresses: [8.8.8.8, 8.8.4.4, 1.1.1.1, 9.9.9.9] search: [mycompany]

Я не очень хорошо знаком с netplan. Поэтому я позволил вам изучить и исправить мои возможные ошибки.

0
ответ дан 17 July 2018 в 14:12

@solsTiCe является правильным, однако /etc/network/interfaces по-прежнему является допустимым методом для настройки сети.

man interfaces

Также есть маршрут /etc/NetworkManager, кстати .

man NetworkManager.conf

На самом деле, netplan отображается в NetworkManager. Так что это действительно просто синтаксический сахар для NetworkManager и Systemd.

Подробнее здесь netplan.

0
ответ дан 17 July 2018 в 14:12

18.04 использовать netplan. Посмотрите на свою страницу man

. Вы можете сделать свой сценарий записью файла .yaml в /etc/netplan и «скомпилировать» его с помощью netplan apply или netplan try или netplan generate

Одним из примеров такого файла будет:

ethernets: match: name: enp2s0 addresses: [10.0.4.5/8] gateway4: 10.0.4.1 nameservers: addresses: [8.8.8.8, 8.8.4.4, 1.1.1.1, 9.9.9.9] search: [mycompany]

Я не очень хорошо знаком с netplan. Поэтому я позволил вам изучить и исправить мои возможные ошибки.

0
ответ дан 20 July 2018 в 14:16
  • 1
    Из того, что я мог получить от Google, это может работать, однако нет никакой реальной информации, которую я мог бы найти о cloud-init, который по умолчанию устанавливается по установке 18.04. Файл .yaml даже доходит до того, что если вы его измените, он не будет придерживаться. Я действительно надеялся, что есть команда CLI, которая могла бы просто сделать это (например, cli-command 192.168.2.98/24 192.168.2.1 ns1 ns2 ... – JRC 15 May 2018 в 23:35
  • 2
    Ну, это не то, что вы просили. перефразируйте свой вопрос. [D0] cloudinit.readthedocs.io/en/latest/topics/&hellip – solsTiCe 16 May 2018 в 09:02

@solsTiCe является правильным, однако /etc/network/interfaces по-прежнему является допустимым методом для настройки сети.

man interfaces

Также есть маршрут /etc/NetworkManager, кстати .

man NetworkManager.conf

На самом деле, netplan отображается в NetworkManager. Так что это действительно просто синтаксический сахар для NetworkManager и Systemd.

Подробнее здесь netplan.

0
ответ дан 20 July 2018 в 14:16

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

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