Soluzione 1:
Su CentOS 7 e Debian 8 (e forse anche altri), basta aggiungere la seguente riga a /etc/issue
My IP address: \4
e questo si risolverà nell'indirizzo IPv4 della macchina. Se hai più interfacce di rete e vuoi sceglierne una specifica, puoi specificarla con
My IP address: \4{eth0}
Seleziona man getty
per un elenco delle sequenze di escape supportate sulla tua distribuzione.
Soluzione 2:
È solo un file di testo ... ci scrivi nello stesso modo in cui invieresti del testo a un file con qualsiasi altro script di shell. Qualcosa del genere sostituirà /etc/issue solo con il tuo indirizzo IP:
ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2 -d: > /etc/issue
Ovviamente puoi renderlo arbitrariamente più complesso, a seconda di quali informazioni vuoi nel tuo /etc/issue
file.
Puoi scrivere su questo file nell'equivalente locale di /etc/rc.d/rc.local (che in genere viene eseguito dopo tutti gli altri script di avvio).
Soluzione 3:
Questo script aggiungerà/rimuoverà indirizzi IP a/da /etc/issue
file se necessario:
#!/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 stai usando una distribuzione basata su Debian, è meglio posizionare lo script in queste posizioni:
/etc/network/if-up.d/update-issue
/etc/network/if-post-down.d/update-issue
In questo modo gli script vengono eseguiti ogni volta che un'interfaccia si attiva o si disattiva. Posizionandolo in /etc/rc.d/rc.local
ha lo svantaggio di essere eseguito solo una volta durante l'avvio.
Soluzione 4:
puoi scriverlo una volta. sfortunatamente non c'è una sequenza di escape getty per mostrare l'indirizzo IP di eth0 ma c'è una sequenza di escape che puoi usare in /etc/issue per mostrare il nome host:\n
puoi sempre impostare staticamente l'ip della macchina in /etc/issue scrivendolo direttamente nel file. fai attenzione che il file /etc/issue.net viene utilizzato per gli accessi remoti, quindi potresti voler modificare anche quello.
in ogni caso, dopo aver lavorato nella finestra del terminale, perderai la schermata iniziale e con essa le informazioni sull'indirizzo ip/host. il modo migliore è impostare il nome host nel prompt (la maggior parte delle distribuzioni Linux lo fa) usando \h o \H o ancora, impostando staticamente l'indirizzo IP che sai essere impostato sull'host nella variabile PS1 puoi impostare la variabile PS1 in /etc/profile sulla maggior parte delle distribuzioni Linux.
Soluzione 5:
Systemd lo rende relativamente facile. systemctl edit [email protected]
con contenuti come:
[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'
Quindi systemctl daemon-reload && systemctl restart [email protected]