Eu tenho algumas 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 logon, onde geralmente mostra o lançamento e o kernel).
Pelo que sei, a mensagem é captada em / etc / issues, mas não sei como e quando escrever.
linux
centos
virtual-machines
Bruno Lopes
fonte
fonte
Respostas:
É apenas um arquivo de texto ... você escreve da mesma maneira que envia texto para um arquivo com qualquer outro script de shell. Algo assim substituiria o arquivo / etc / issue apenas pelo seu endereço IP:
Obviamente, você pode tornar isso arbitrariamente mais complexo, dependendo das informações que você deseja no seu
/etc/issue
arquivo.Você pode gravar neste arquivo no seu equivalente local /etc/rc.d/rc.local (que normalmente é executado após todos os outros scripts de inicialização).
fonte
ip address show eth0 | awk '/inet / {print $2}' | cut -d/ -f1
ip
é a ferramenta que você deveria usar para esse tipo de coisa.ifconfig
é tecnicamente apenas para compatibilidade.No CentOS 7 e Debian 8 (e talvez outros também), basta anexar a seguinte linha a
/etc/issue
e isso será resolvido para o endereço IPv4 da máquina. Se você possui várias interfaces de rede e deseja escolher uma específica, pode especificá-la com
Verifique
man getty
uma lista de sequências de escape suportadas na sua distribuição.fonte
Este script adicionará / removerá endereços IP de / para o
/etc/issue
arquivo, conforme necessário:Se você estiver usando uma distribuição baseada no Debian, é melhor colocar o script nesses locais:
Dessa forma, os scripts são executados toda vez que uma interface é ativada ou desativada. Colocá-lo
/etc/rc.d/rc.local
tem a desvantagem de ser executado apenas uma vez durante a inicialização.fonte
/sbin/if{up,down}-local
. (Se ele existir, ele é chamado por/etc/sysconfig/network-scripts/ip{up,down}-post
.)--all-ip-addresses
gera também endereços IP "públicos". Talvez algo como "endereços IP de todas as interfaces externas deste host:" faça mais sentido.você pode escrever uma vez. infelizmente não existe uma sequência de escape getty para mostrar o endereço IP de eth0, mas existe uma sequê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. lembre-se de que o arquivo /etc/issue.net é usado para logins remotos; portanto, você também pode editá-lo.
de qualquer maneira, depois de trabalhar na janela do terminal, você perderá a tela inicial e as informações de endereço IP / host. A melhor maneira é definir o nome do host no prompt (a maioria das distribuições Linux) usando \ h ou \ H ou novamente, definindo estaticamente o endereço IP que você sabe que está definido no host na variável PS1, você pode definir a variável PS1 em / etc / perfil na maioria das distros linux.
fonte
Muito obrigado ao @larsks por começar. Descobri que havia problemas com a conclusão do script antes de ser necessário, portanto meu arquivo de problemas estava sempre em branco. Então eu adicionei uma pausa de 1 segundo e fiz um loop. Eu realmente não sou um roteirista de bash, então, se houver uma maneira melhor de fazer isso, entre em contato. Eu adicionei um
COUNT
para garantir que ele não ficasse para sempre.Eu coloquei esse script
/etc/network/if-up.d/
.fonte
O Systemd torna isso relativamente fácil.
systemctl edit getty@
com conteúdo como:Então
systemctl daemon-reload && systemctl restart getty@tty1
fonte
Para quem chegou aqui que usa o Ubuntu 19.04, acabei adotando a resposta do @ powpow.
Eu criei o arquivo:
/etc/network/if-up.d/update-issue
com o seguinte conteúdo:Marquei o arquivo como executável:
chmod 0755 /etc/network/if-up.d/update-issue
Funciona bem!
fonte