回答:
それは単なるテキストファイルです...他のシェルスクリプトでファイルにテキストを送信するのと同じ方法で書き込みます。このようなものは/ 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
では、この種のことを行うために使用するはずのツールであるため、もっとlinuxy です。ifconfig
技術的には互換性のためだけです。
上のCentOS 7とのDebian 8(そしておそらく他も同様)だけに次の行を追加/etc/issue
My IP address: \4
そして、それはマシンのIPv4アドレスに解決されます。複数のネットワークインターフェイスがあり、特定の1つを選択する場合は、次のように指定できます。
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
Debianベースのディストリビューションを使用している場合は、次の場所にスクリプトを配置することをお勧めします。
/etc/network/if-up.d/update-issue
/etc/network/if-post-down.d/update-issue
これにより、インターフェイスが起動または停止するたびにスクリプトが実行されます。配置すると、/etc/rc.d/rc.local
ブートアップ中に1回だけ実行されるという欠点があります。
/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ディストリビューションが行います)。または、/ etc /ほとんどの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
ここにUbuntu 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
よく働く!