有没有办法在 bash 脚本中获取用户的 SSH 客户端 IP 地址?

ins*_*nce 4 bash bash-scripting

由于应用程序限制,我有两个用户需要使用相同的登录名。

这些用户对 shell 提示应该是什么样子有很大的不同意见。其中一位甚至坚持要修改色觉。这导致了 .bashrc PS1 争议。我已经给了他们脚本来设置他们自己的偏好,但是......让我们说这很复杂。

幸运的是,它们都从具有已知 IP 地址的位置连接。有没有一种方法可以将用户的远程 IP 地址合并到一个条件中,从而为他们提供他们想要的东西,而无需任何额外的步骤?他们通过 ssh 连接。

Kam*_*ski 5

来自 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
Run Code Online (Sandbox Code Playgroud)

或喜欢

if [ "${SSH_CONNECTION%% *}" = "1.2.3.4" ]; then
   PS1=…
else
   PS1=…
fi
Run Code Online (Sandbox Code Playgroud)