我试图找到一种方法来动态设置bash环境设置,具体取决于我要登录的环境。
例如:
.bash_profile.bash_profile。我曾考虑过测试环境变量SSH_CLIENT,但这将根据DHCP地址的不同而改变--我的机器是从那天开始测试的。
是否有方法确定远程机器的平台是什么,然后相应地处理.bash_profile?
如果我不能在.bash_profile中“自我包含”,是否有什么我可以“发送”的东西可以让我做到这一点?
发布于 2018-01-10 18:01:21
是否有方法确定远程机器的平台是什么,然后相应地处理.bash_profile?
不简单,不。如果网络条件允许,您可以使用nmap来识别$SSH_CLIENT中原始IP的操作系统,但这并不一定可靠。
如果您的源系统位于不同的网段上,您可以使用它作为区分源系统的粗略指示符,但这里的情况并非如此。
由于您只想让Mac的连接做一些不同的事情,一种选择是将Mac的ssh连接包装或别名到目标,这样它就会传递一个自定义环境变量,以便bash检查:
alias ssh2it='ssh -t targethost "_origin=mac bash -il"'然后按照以下思路设置目标程序的~/..bashrc:
case $_origin in
(mac)
echo mac-specific settings here
;;
(other-custom-system)
echo other settings here
;;
(*)
echo any default settings here
;;
esac您必须将这种想法扩展到您希望行为不同的其他类型的系统,这意味着包装每个交互式登录以设置变量。
如果可以进一步控制目标系统的sshd_config,则可以编辑/etc/ssh/sshd_config以添加:
AcceptEnv _origin(然后回收sshd)。
然后在原始系统上,编辑~/..ssh/config以发送该变量:
Host targetsystem
SendEnv _origin在连接到目标之前,请运行:
export _origin=mac然后,在登录到目标系统后,$_origin将被设置为该值。
https://unix.stackexchange.com/questions/415960
复制相似问题