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