我使用很多虛擬機器。用於測試和預生產設定。
我希望登入提示或標頭顯示機器的 IP 位址。這樣,當我啟動它時,我可以看到我將 ssh 連接到哪個 IP。我們的網路使用 DHCP。所以它可以在啟動之間改變。
$ cat /etc/issue
Ubuntu 11.04 \n \l
結果是
Ubuntu 11.04 [主機名稱] tty[x]
我希望它出現為
Ubuntu 11.04 [主機名稱] tty[x] ip xxx.xxx.xxx.xxx
我正在考慮編寫一個 init / upstart 腳本。有沒有更好的辦法。
答案1
Getty 不知道機器的 IP 位址。但這個問題已經被問過伺服器故障。這是已接受的答案:
它只是一個文字檔案...您可以像使用任何其他 shell 腳本將文字發送到檔案一樣對其進行寫入。像這樣的東西會用你的 IP 位址替換 /etc/issue:
ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2 -d: > /etc/issue
顯然,您可以任意使其變得更加複雜,具體取決於您想要在文件中包含哪些資訊
/etc/issue
。您可以在本機等效檔案中寫入此檔案
/etc/rc.d/rc.local
(通常在所有其他啟動腳本之後執行)。
另外,請注意該文件/etc/issue.net
用於遠端登錄,因此您可能還需要對其進行編輯。
答案2
在作業系統7和德班8(也許還有其他),只需將以下行添加到/etc/issue
My IP address: \4
這將解析為機器的 IPv4 位址。如果您有多個網路接口並且您想要選擇一個特定的網路接口,則可以使用以下命令指定它:
My IP address: \4{eth0}
答案3
對於具有 DHCP 租用 IP 的 CentOS 5,您可以使用下列腳本:
$ cat /etc/dhcp/dhclient.d/issue.sh
#!/bin/bash
update_issue() {
awk -v \
r="$(ip -o addr | awk '/inet [1-9]+/ { print $2 " " $4 }')" \
'{ gsub(/%INTERFACES%/,r) }1' \
/etc/issue.template > /etc/issue
}
issue_config() {
update_issue
}
issue_restore() {
update_issue
}
有一個像這樣的問題「模板」:
$ cat /etc/issue.template
CentOS release 6.5 (Final)
Kernel \r on an \m
%INTERFACES%
記得
chmod +x /etc/dhcp/dhclient.d/issue.sh
awk
取得目前 IP 並在檔案中取代它們的命令應該/etc/issue.template
可移植到現代 Linux 發行版。