修改登入提示或標頭(/etc/issue)以顯示機器的 IP 位址

修改登入提示或標頭(/etc/issue)以顯示機器的 IP 位址

我使用很多虛擬機器。用於測試和預生產設定。

我希望登入提示或標頭顯示機器的 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 發行版。

相關內容