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