Como posso exibir o endereço IP do eth0 na tela de login no Precise Server?


23

O servidor que administro, inconvenientemente, tem um endereço IP dinâmico atribuído pelo DHCP. O contrapeso conveniente, porém, é que ele é montado a cerca de dois pés de onde estou sentado. Eu sei como editar o arquivo / etc / issue para mostrar valores diferentes antes que o prompt de login seja entregue à tela, mas gostaria de saber se é possível para o / etc / issue exibir o endereço IP atual de eth0 (reavaliado no momento da inicialização) para que eu possa vê-lo e depois fazer o ssh sem precisar fazer login para executar o ifconfig.


O conky pode ser usado na tela de login? Nesse caso, você pode fazer todo tipo de informação útil.
Dibs

Respostas:


27

No Debian 8 / jessie, você pode usar os caracteres de escape \4e \6para produzir os endereços IPv4 e IPv6. Então o /etc/issuearquivo:

Debian GNU/Linux 8 \n \l

eth0: \4{eth0}

Produziria algo como o seguinte no console de login:

Debian GNU/Linux 8 myserver tty1

eth0: 192.168.1.100
myserver login:

Eu imagino que o Ubuntu forneceria funcionalidade semelhante (pelo menos em versões mais recentes)


Isso funcionou para mim no Ubuntu 16.04 LTS, a resposta marcada como correta não, provavelmente um problema com o comentário grep, em qualquer caso, obrigado por postar isso.
precisa saber é o seguinte

Ainda funciona no Debian 9 :)
borekon

12

/etc/issueinfelizmente, é um texto sem formatação, possui algumas opções que você pode adicionar (consulte man agetty), mas não o endereço IP de eth0.

Se você colocar isso em /etc/rc.local:

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

Então você verá algo assim:

eth0: 192.168.0.2
myServer login:

3
Observe que, para qualquer pessoa que execute isso, isso substituirá o conteúdo do / etc / issue. Você pode adicionar etapas para exibir as linhas "eth *" anteriores e depois anexá-las.
Rebs

1

Com base na resposta de Alex e no comentário de Rebs, é isso que tenho no meu /etc/rc.localarquivo (apenas linhas relevantes):

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"

O printfcomando faz a mágica. Infelizmente, colocar a cadeia de formatação dentro '\n'e '\l'dentro do formato acabou substituindo o primeiro pelo novo caractere de linha e o /etc/issuearquivo foi desarrumado.

Para encurtar a história, essas quatro linhas mantêm as informações originais exibidas por /etc/issuearquivo e adicionam a Server IP Address:mensagem.

E, como Rebs disse, lembre-se de que toda vez que você reinicia o servidor, esse script substitui o /etc/issuearquivo, então talvez tente dentro de um script diferente e em um arquivo diferente e, quando estiver funcionando, transfira as alterações ...

Boa sorte e feliz BASHing :)


0

Com o systemd, você pode fazer systemctl edit getty@algo como:

[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'

Então systemctl daemon-reload && systemctl restart getty@tty1


0

Para o Ubuntu 19.04, segui estas etapas:

Eu criei o arquivo: /etc/network/if-up.d/update-issuecom o seguinte conteúdo:

#!/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

Marquei o arquivo como executável: chmod 0755 /etc/network/if-up.d/update-issue

Funciona bem!


0

Com base nas respostas de Nurchi, Alex e Steve e no comentário de Reb,

A seguir, será cumprido o IP antigo e adicionado qualquer endereço IP não local (127.). Meu servidor é uma VM e não tem eth0. Testando no Ubuntu 18.04

Colocar em /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

Então chmod 0755 /etc/network/if-up.d/update-issue

A única diferença entre a minha resposta e a de Steve é ​​a adição das linhas grep para remover a linha IP, capturar a mensagem e lê-la junto com o novo / atualizado IP

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.