由于应用程序限制,我有两个用户需要使用相同的登录信息。
这些用户对于 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 版本;身份验证日志文件位置/名称和确切格式可能因其他版本而异。)