답변:
텍스트 파일 일뿐입니다. 다른 셸 스크립트를 사용하여 텍스트를 파일로 보내는 것과 같은 방식으로 파일에 씁니다. 이와 같은 것은 / etc / issue를 당신의 IP 주소로 대체 할 것입니다 :
ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2 -d: > /etc/issue
/etc/issue
파일 에서 원하는 정보에 따라 임의로 더 복잡하게 만들 수 있습니다.
/etc/rc.d/rc.local에 해당하는 로컬로이 파일에 쓸 수 있습니다 (일반적으로 다른 모든 시작 스크립트 후에 실행 됨).
ip address show eth0 | awk '/inet / {print $2}' | cut -d/ -f1
ip
에는 이런 종류의 도구를 사용해야하기 때문에 더 리눅스 입니다. ifconfig
기술적으로 호환성을위한 것입니다.
에 CentOS는 7 과 데비안 8 (그리고 아마도 다른뿐만 아니라) 단지에 다음 줄을 추가/etc/issue
My IP address: \4
그러면 시스템의 IPv4 주소로 확인됩니다. 여러 네트워크 인터페이스가 있고 특정 네트워크 인터페이스를 하나 선택하려면 다음을 사용하여 지정할 수 있습니다.
My IP address: \4{eth0}
man getty
배포에서 지원되는 이스케이프 시퀀스 목록을 확인하십시오 .
이 스크립트는 /etc/issue
필요에 따라 파일에 IP 주소를 추가하거나 제거 합니다.
#!/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
데비안 기반 배포판을 사용하는 경우 다음 위치에 스크립트를 배치하는 것이 가장 좋습니다.
/etc/network/if-up.d/update-issue
/etc/network/if-post-down.d/update-issue
이런 식으로 인터페이스가 올라 오거나 내려갈 때마다 스크립트가 실행됩니다. 그것을 넣으면 /etc/rc.d/rc.local
부팅 중에 한 번만 꿀벌이 실행된다는 단점이 있습니다.
/sbin/if{up,down}-local
. (존재하는 경우에 의해 호출됩니다 /etc/sysconfig/network-scripts/ip{up,down}-post
.)
--all-ip-addresses
"공용"IP 주소도 출력합니다. "이 호스트의 모든 외부 인터페이스의 IP 주소 :"와 같은 것이 더 적합 할 수 있습니다.
한 번만 쓸 수 있습니다. 불행히도 eth0의 IP 주소를 표시하는 getty 이스케이프 시퀀스는 없지만 / etc / issue에서 호스트 이름을 표시하는 데 사용할 수있는 이스케이프 시퀀스가 있습니다 : \ n
당신은 항상 파일에 직접 써서 / etc / issue에서 기계의 IP를 정적으로 설정할 수 있습니다. /etc/issue.net 파일은 원격 로그인에 사용되므로이를 편집 할 수도 있습니다.
어쨌든, 터미널 창에서 작업 한 후 초기 화면과 IP / 호스트 주소 정보를 잃게됩니다. 가장 좋은 방법은 \ h 또는 \ H를 사용하여 프롬프트에서 호스트 이름을 설정하는 것입니다 (대부분의 Linux 배포판은 그렇게합니다). 대부분의 리눅스 배포판에서 프로파일.
시작해 주셔서 감사합니다. @larsks 스크립트가 완성되기 전에 문제가 발생하여 문제 파일이 항상 비어 있음을 알았습니다. 그래서 1 초의 일시 중지를 추가하고 반복했습니다. 나는 실제로 bash 스크립터가 아니므로 더 좋은 방법이 있으면 알려주십시오. 나는 COUNT
영원히 반복되지 않도록하기 위해를 추가했습니다 .
#!/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
이 스크립트를에 배치했습니다 /etc/network/if-up.d/
.
Systemd는 이것을 비교적 쉽게 만듭니다. systemctl edit getty@
다음과 같은 내용으로 :
[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'
그때 systemctl daemon-reload && systemctl restart getty@tty1
우분투 19.04를 사용하는 사람은 @powpow의 답변을 채택했습니다.
/etc/network/if-up.d/update-issue
다음 내용으로 파일을 만들었습니다 .
#!/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
그런 다음 파일을 실행 파일로 표시했습니다. chmod 0755 /etc/network/if-up.d/update-issue
잘 작동합니다!