Измените приглашение или заголовок логина (/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. Есть ли способ лучше.

3 ответа

Решение

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 используется для удаленного входа в систему, так что вы можете отредактировать это.

В CentOS 7 и Debian 8 (и, возможно, в других) просто добавьте следующую строку в /etc/issue

My IP address: \4

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

My IP address: \4{eth0}

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

$ 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.

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