У меня есть пара виртуальных машин linux с мостовыми интерфейсами, и я хотел бы, чтобы IP-адрес машины отображался после загрузки машины (при входе в систему, где обычно указывается релиз и ядро).
Из того, что я могу сказать, сообщение взято из / etc / Issues, но я не уверен, как и когда писать в него.
linux
centos
virtual-machines
Бруно Лопес
источник
источник
Ответы:
Это просто текстовый файл ... вы пишете в него так же, как отправляете текст в файл любым другим сценарием оболочки. Что-то вроде этого заменит / etc / issue только вашим IP-адресом:
Очевидно, вы можете сделать это произвольно более сложным, в зависимости от того, какую информацию вы хотите в вашем
/etc/issue
файле.Вы можете записать в этот файл ваш локальный эквивалент /etc/rc.d/rc.local (который обычно выполняется после всех других сценариев запуска).
источник
ip address show eth0 | awk '/inet / {print $2}' | cut -d/ -f1
ip
- это инструмент, который вы должны использовать для такого рода вещей.ifconfig
технически только для совместимости.В CentOS 7 и Debian 8 (и, возможно, в других) просто добавьте следующую строку в
/etc/issue
и это приведет к IPv4-адресу компьютера. Если у вас есть несколько сетевых интерфейсов, и вы хотите выбрать один конкретный, вы можете указать его с помощью
Проверьте
man getty
список поддерживаемых escape-последовательностей в вашем дистрибутиве.источник
Этот скрипт будет добавлять / удалять IP-адреса в / из
/etc/issue
файла по мере необходимости:Если вы используете дистрибутив на основе Debian, лучше всего разместить скрипт в следующих местах:
Таким образом, сценарии выполняются каждый раз, когда интерфейс запускается или выключается.
/etc/rc.d/rc.local
Недостатком его размещения является то, что он выполняется только один раз во время загрузки.источник
/sbin/if{up,down}-local
. (Если он существует, он называется/etc/sysconfig/network-scripts/ip{up,down}-post
.)--all-ip-addresses
выводит также «публичные» IP-адреса. Может быть, что-то вроде «IP-адреса всех внешних интерфейсов этого хоста:» имеет больше смысла.Вы можете написать это один раз. к сожалению, нет escape-последовательности getty для отображения ip-адреса eth0, но есть escape-последовательность, которую вы можете использовать в / etc / issue для отображения имени хоста: \ n
вы всегда можете статически установить ip машины в / etc / issue, записав его прямо в файл. имейте в виду, что файл /etc/issue.net используется для удаленных входов в систему, так что вы можете также отредактировать его.
в любом случае, после работы в окне терминала вы потеряете начальный экран и информацию об адресе ip / host вместе с ним. лучший способ - установить имя хоста в командной строке (большинство дистрибутивов Linux), используя \ h или \ H, или снова, статически устанавливая IP-адрес, который вы знаете, установлен на хосте в переменной PS1, которую вы можете установить для переменной PS1 в / etc / профиль на большинстве дистрибутивов Linux.
источник
Большое спасибо @larsks за начало работы. Я обнаружил, что у меня были проблемы с завершением сценария, прежде чем он был необходим, поэтому мой файл с вопросом всегда был пустым. Поэтому я добавил паузу в 1 секунду и сделал петлю. Я на самом деле не сценарист bash, поэтому, если есть лучший способ сделать это, пожалуйста, дайте мне знать. Я добавил,
COUNT
чтобы убедиться, что он не зацикливается вечно.Я поместил этот скрипт в
/etc/network/if-up.d/
.источник
Systemd делает это относительно легко.
systemctl edit getty@
с содержанием вроде:потом
systemctl daemon-reload && systemctl restart getty@tty1
источник
Для любого приземляющегося здесь, который использует Ubuntu 19.04, я принял ответ @ powpow.
Я создал файл:
/etc/network/if-up.d/update-issue
со следующим содержанием:Затем я пометил файл как исполняемый файл:
chmod 0755 /etc/network/if-up.d/update-issue
Прекрасно работает!
источник