измените приглашение на вход или заголовок (/etc/issue) для отображения IP-адреса машины

измените приглашение на вход или заголовок (/etc/issue) для отображения IP-адреса машины

Я работаю со многими виртуальными машинами. Для тестирования и предварительной настройки.

Я хотел бы, чтобы в приглашении на вход или в заголовке отображался IP-адрес машины. Таким образом, когда я его запущу, я смогу увидеть, на какой IP я буду подключаться по ssh. Наша сеть использует DHCP. Поэтому он может меняться между загрузками.

$ cat /etc/issue
Ubuntu 11.04 \n \l

Что появляется как

Ubuntu 11.04 [имя хоста] tty[x]

Я хочу, чтобы это появилось как

Ubuntu 11.04 [имя хоста] tty[x] ip xxx.xxx.xxx.xxx

Я думал написать скрипт init / upstart. Есть ли способ получше?

решение1

Getty не знает IP-адреса машины. Но этот вопрос уже задавался наошибка сервера. Вот принятый ответ:

Это просто текстовый файл... вы пишете в него так же, как отправляете текст в файл с помощью любого другого скрипта оболочки. Что-то вроде этого заменит /etc/issue только вашим IP-адресом:

ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2 -d: > /etc/issue

Разумеется, вы можете сделать этот процесс сколь угодно сложным, в зависимости от того, какую информацию вы хотите включить в свой /etc/issueфайл.

Вы можете записать в этот файл свой локальный эквивалент /etc/rc.d/rc.local(который обычно выполняется после всех остальных сценариев запуска).

Также имейте в виду, что файл /etc/issue.netиспользуется для удаленного входа в систему, поэтому его также можно отредактировать.

решение2

НаCentOS7иДебиан 8(а может и другие), просто добавьте следующую строку/etc/issue

My IP address: \4

и это будет преобразовано в IPv4-адрес машины. Если у вас несколько сетевых интерфейсов и вы хотите выбрать один конкретный, вы можете указать его с помощью

My IP address: \4{eth0}

решение3

Для CentOS 5 с арендованным DHCP IP-адресом можно использовать этот скрипт:

$ cat /etc/dhcp/dhclient.d/issue.sh
#!/bin/bash

update_issue() {
    awk -v \
        r="$(ip -o addr | awk '/inet [1-9]+/ { print $2 " " $4 }')" \
        '{ gsub(/%INTERFACES%/,r) }1' \
        /etc/issue.template > /etc/issue
}

issue_config() {
    update_issue
}

issue_restore() {
    update_issue
}

с таким «шаблоном» проблемы:

$ cat /etc/issue.template
CentOS release 6.5 (Final)
Kernel \r on an \m

%INTERFACES%

Запомни

chmod +x /etc/dhcp/dhclient.d/issue.sh

Команда awkдля получения текущего IP-адреса и замены его в /etc/issue.templateфайле должна быть переносимой на современные дистрибутивы Linux.

Связанный контент