由於應用程式限制,我有兩個用戶需要使用相同的登入名稱。
這些使用者對於 shell 提示符號的外觀有著截然不同的看法。其中一位甚至堅持要修改調色板。這導致了 .bashrc PS1 爭議。我給了他們腳本來設定自己的偏好,但是......只能說這很複雜。
幸運的是,它們都從具有已知 IP 位址的位置連接。有沒有一種方法可以將使用者的遠端 IP 位址合併到條件中,從而為他們提供他們想要的東西,而無需執行任何額外的步驟?他們透過 ssh 連結。
答案1
來自 OpenSSH SSH 用戶端手冊(man 1 ssh
):
ENVIRONMENT
ssh
通常會設定以下環境變數:[…]
SSH_CONNECTION
標識連線的客戶端和伺服器端。此變數包含四個空格分隔的值:客戶端 IP 位址、客戶端連接埠號碼、伺服器 IP 位址和伺服器連接埠號碼。[…]
在.bashrc
你應該這樣做:
case "${SSH_CONNECTION%% *}" in
1.2.3.4|1.2.3.5 )
PS1=…
;;
2.2.7.* )
PS1=…
;;
# add support for more users if needed
esac
或喜歡
if [ "${SSH_CONNECTION%% *}" = "1.2.3.4" ]; then
PS1=…
else
PS1=…
fi
答案2
如果他們使用密鑰透過 ssh 登錄,您可以執行以下操作:
myip=`grep 'Accepted publickey for bozo' /var/log/auth.log | tail -1 | awk '{print $11}'`
然後比較$myip。如果他們使用密碼,請進行相應修改。 (如果因為某些原因他們的用戶名不是 bozo,也可以修改。)
(這應該適用於 Ubuntu 和其他 Debian 變體;身份驗證日誌檔案位置/名稱和確切格式可能會因其他版本而異。)