Как я могу отобразить IP-адрес eth0 на экране входа в систему на Precise Server?

23

Сервер, которым я управляю, довольно неудобно, имеет динамический IP-адрес, назначаемый DHCP. Однако удобный противовес заключается в том, что он установлен примерно в двух футах от того места, где я сижу. Я знаю, как отредактировать / etc / issue, чтобы показывать другие значения, до того, как приглашение входа в систему будет доставлено на дисплей, но я хотел бы знать, возможно ли для / etc / issue отображать текущий IP-адрес eth0 (переоценен во время загрузки), чтобы я мог видеть его, а затем войти в ssh без необходимости входа в систему, чтобы запустить ifconfig.

ssonicblue
источник
Можно ли использовать conky на экране входа? Если это так, вы можете сделать все виды информации под рукой.
Чт

Ответы:

27

По состоянию на Debian 8 / Jessie вы можете использовать \4и \6управляющие символы для вывода адреса IPv4 и IPv6. Итак, /etc/issueфайл:

Debian GNU/Linux 8 \n \l

eth0: \4{eth0}

Будет выводить что-то вроде следующего на консоли входа в систему:

Debian GNU/Linux 8 myserver tty1

eth0: 192.168.1.100
myserver login:

Я предполагаю, что Ubuntu обеспечит подобную функциональность (по крайней мере, в более новых выпусках)

jerrykan
источник
Это работало для меня в Ubuntu 16.04 LTS, ответ, помеченный как правильный, не имел, вероятно, проблема с комментарием grep, в любом случае, спасибо за публикацию этого.
Tracker1
Это все еще работает на Debian 9 :)
borekon
12

/etc/issueК сожалению, это простой текст, он имеет некоторые опции, которые вы можете добавить к нему (см. man agetty), но не IP-адрес eth0.

Если вы вставите это в /etc/rc.local:

IP=$(/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
echo "eth0 IP: $IP" > /etc/issue

Тогда вы увидите что-то вроде этого:

eth0: 192.168.0.2
myServer login:
Алекс Р
источник
3
Обратите внимание, что для тех, кто запускает это, это перезапишет содержимое / etc / issue. Вы можете добавить шаги, чтобы очистить предыдущие строки "eth *", а затем добавить их.
Ребс
1

Основываясь на ответе Алекса и комментарии Ребса, вот что у меня есть для моего /etc/rc.localфайла (только соответствующие строки):

PRE_MSG="Ubuntu 14.04.3 LTS" # this is from the original /etc/issue

IP=$(/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')

IP_MSG="Server IP Address:"

printf "%s %s %s\n\n%s %s\n\n" "$PRE_MSG" '\n' '\l' "$IP_MSG" "$IP" > "/etc/issue"

Команда printfделает волшебство. К сожалению , помещая '\n'и '\l'внутри строки формата в конечном итоге заменить первый с новой строки и /etc/issueфайл был перепутались.

Короче говоря, эти 4 строки сохраняют исходную информацию, отображаемую /etc/issueфайлом, и добавляют Server IP Address:сообщение.

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

Удачи и счастливого BASHing :)

nurchi
источник
0

С systemd вы можете сделать systemctl edit getty@что-то вроде:

[Service]
ExecStartPre=-/bin/bash -c '[ ! -f /etc/.issue.orig ] && cp /etc/issue /etc/.issue.orig; int=`ls /sys/class/net|grep enp|head -1`; sed -r "s/\\\\\\n/[\\\\\\4\{$$int\}]/" < /etc/.issue.orig > /etc/issue'

затем systemctl daemon-reload && systemctl restart getty@tty1

h0tw1r3
источник
0

Для Ubuntu 19.04 я выполнил следующие шаги:

Я создал файл: /etc/network/if-up.d/update-issueсо следующим содержанием:

#!/bin/sh
PREFIX="Ubuntu 19.04 - dev"
IPADDRS=$(hostname -I | tr " " "\n" | grep -v "^$" | sort -t . -k 1,1n | head -1 | tr "\n" " ")
echo "$PREFIX\n\nIP: $IPADDRS\n" > /etc/issue

Затем я пометил файл как исполняемый файл: chmod 0755 /etc/network/if-up.d/update-issue

Работает отлично!

Стив Макдональд
источник
0

Опираясь на Нурчи, ответы Алекса и Стива и комментарий Реба,

Следующая команда извлечет старый IP-адрес и добавит любые нелокальные (127.) IP-адреса. Мой сервер является виртуальной машиной и не имеет eth0. Тестирование на Ubuntu 18.04

Установить в /etc/network/if-up.d/update-issue

#!/bin/sh
MSG=$(cat /etc/issue | grep -v IP)
IP=$(/sbin/ifconfig | grep 'inet' | grep -v '127' | cut -d: -f2 | awk '{ print $2 }')
printf "%s\n%s\n\n" "$MSG" "IP: $IP" > /etc/issue

затем chmod 0755 /etc/network/if-up.d/update-issue

Единственная разница между моим ответом и ответом Стива состоит в добавлении строк grep для удаления строки IP, захвата сообщения и чтения его вместе с новым / обновленным IP

agrath
источник