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

15

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

    
por ssonicblue 15.11.2012 / 00:16

4 respostas

10

/etc/issue é infelizmente um texto simples, tem algumas opções que você pode adicionar (veja man agetty ) mas não o endereço IP da eth0.

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

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

Então você verá algo assim:

eth0: 192.168.0.2
myServer login:
    
por Alex R 15.11.2012 / 10:36
15

A partir do Debian 8 / jessie você pode usar os caracteres de escape e para gerar os endereços IPv4 e IPv6. Então, o arquivo /etc/issue :

Debian GNU/Linux 8 \n \l

eth0: {eth0}

A saída seria 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)

    
por jerrykan 12.07.2016 / 04:35
1

Com base na resposta de Alex e no comentário de Rebs, isso é o que eu tenho para o meu arquivo /etc/rc.local (somente 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 }')

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 comando printf faz a mágica. Infelizmente colocar o '\n' e '\l' dentro da string de formato acabou substituindo o primeiro com o novo caractere de linha e o arquivo /etc/issue foi confuso.

Portanto, para encurtar a história, essas quatro linhas mantêm as informações originais exibidas pelo arquivo /etc/issue e adicionam a mensagem Server IP Address: .

E como Rebs disse, tenha em mente que toda vez que você reinicializar o servidor, este script irá sobrescrever o arquivo /etc/issue , então talvez tente dentro de um script diferente e em um arquivo diferente e, assim que ele estiver funcionando, transfira o arquivo muda mais ...

Boa sorte e feliz BASHing:)

    
por nurchi 31.03.2016 / 22:40
0

Com o systemd você pode fazer systemctl edit getty@ com 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

    
por h0tw1r3 12.10.2016 / 01:33