我有一个 shell 脚本,如果用户正在物理使用计算机,我想执行一件事,如果用户通过 SSH 登录,我想执行另一件事。
我该如何做呢?
更具体地说,我的普通机器是 OS X,我想使用 OS X 图形编辑器 (BBEdit) 作为我的编辑器。但是,如果我从上网本通过 SSH 连接到我的 Mac,我想使用 vim - 我没有与 Mac 的图形连接。
谢谢!
答案1
您应该能够使用 SSH_CONNECTION、SSH_TTY 或 DISPLAY 环境变量。
看:http://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/ssh.1.html
SSH_CONNECTION Identifies the client and server ends of the connection. The variable contains
four space-separated values: client IP address, client port number, server IP
address, and server port number.
编辑:SSH_CLIENT 也是一个选项,但它没有出现在手册页中。
答案2
比较您的env
本地和通过 SSH 登录时的情况。
我有例如,,SSH_CONNECTION
仅在通过 SSH 登录时定义。SSH_CLIENT
SSH_TTY
答案3
我相信 /var/run/utmpx(参见“man utmpx”)有此信息。如果您运行“who”,您会看到 who 命令可以判断您是否从远程节点连接(甚至知道您从哪里连接)。
因此,您可以始终使用 who 命令并调整输出来确定这一点。
注意:我相信上述答案(关于使用 SSH_CONNECTION)是更好的解决方案。