Como configurar o arquivo / etc / issues para mostrar o endereço IP da eth0

9

Eu tenho um par de máquinas virtuais Linux com interfaces em ponte, e gostaria que o endereço IP da máquina aparecesse após a inicialização da máquina (no login, onde geralmente é mostrado o release e o kernel).

Pelo que posso dizer, a mensagem é retirada de / etc / issues, mas não sei como e quando escrever nela.

    
por Bruno Lopes 06.12.2010 / 15:52

6 respostas

12

É apenas um arquivo de texto ... você escreve da mesma maneira que envia um texto para um arquivo com qualquer outro script de shell. Algo como isto iria substituir o / etc / issue apenas com o seu endereço IP:

ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2 -d: > /etc/issue

Obviamente, você pode tornar isso arbitrariamente mais complexo, dependendo de quais informações você deseja no arquivo /etc/issue .

Você pode escrever para este arquivo em seu equivalente local de /etc/rc.d/rc.local (que geralmente é executado após todos os outros scripts de inicialização).

    
por 06.12.2010 / 15:58
20

Em CentOS 7 e Debian 8 (e talvez outros também), apenas anexe a seguinte linha a /etc/issue

My IP address: 

e isso será resolvido para o endereço IPv4 da máquina. Se você tiver várias interfaces de rede e quiser escolher uma específica, poderá especificá-la com

My IP address: {eth0}

Verifique man getty para obter uma lista de sequências de escape suportadas na sua distribuição.

    
por 11.01.2017 / 14:40
5

Este script irá adicionar / remover endereços IP de / para o arquivo /etc/issue conforme necessário:

#!/bin/sh
PREFIX="Local IP addresses:"
IPADDRS=$(hostname -I | tr " " "\n" | grep -v "^$" | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tr "\n" " ")

perl -i -p -0777 -e "s/^$PREFIX[^\n]*\n\n//m; s/$/\n$PREFIX $IPADDRS\n/ if length('$IPADDRS')>6" /etc/issue

Se você estiver usando uma distro baseada no Debian, é melhor colocar o script nesses locais:

/etc/network/if-up.d/update-issue
/etc/network/if-post-down.d/update-issue

Desta forma, os scripts são executados toda vez que uma interface aparece ou desce. Colocá-lo em /etc/rc.d/rc.local tem a desvantagem de ser executado apenas uma vez durante a inicialização.

    
por 10.05.2014 / 10:15
3

você pode escrever uma vez. infelizmente não há uma seqüência de escape do getty para mostrar o endereço IP da eth0, mas há uma seqüência de escape que você pode usar em / etc / issue para mostrar o nome do host: \ n

você sempre pode definir estaticamente o ip da máquina em / etc / issue, escrevendo-o diretamente no arquivo. Cuidado que o arquivo /etc/issue.net é usado para logins remotos, então você pode querer editá-lo também.

de qualquer forma, depois de trabalhar na janela do terminal, você perderá a tela inicial e as informações do endereço IP / host com ele. A melhor maneira é definir o nome do host no prompt (a maioria das distribuições do Linux faz) usando \ h ou \ H ou novamente, configurando estaticamente o endereço IP que você sabe que está configurado no host na variável PS1 você pode definir a variável PS1 em / etc / profile na maioria das distros linux.

    
por 06.12.2010 / 16:07
0

Muito obrigado a @larsks por começar. Descobri que tive problemas com o script antes de ser necessário, então meu arquivo de problema estava sempre em branco. Então eu adicionei uma pausa de 1 segundo e dei um loop. Eu não sou realmente um roteirista, então se há uma maneira melhor de fazer isso, por favor me avise. Eu adicionei um COUNT para garantir que ele não fosse repetido para sempre.

#!/bin/sh

COUNT=1

while [ $COUNT -lt 10 ]
do
  echo $COUNT

  COUNT=$((COUNT + 1))
  IP='ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2 -d: '
  if [ -n "$IP" ]; then
    break
  fi 
  sleep 1
done


echo "IP: " $IP | cat > /etc/issue

Eu coloquei este script em /etc/network/if-up.d/ .

    
por 25.07.2016 / 21:56
0

O Systemd torna isso relativamente fácil. systemctl edit getty@ com conteúdo 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 12.10.2016 / 01:35