我有一個 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_CLIENT
,SSH_TTY
僅在透過 SSH 登入時定義。
答案3
我相信 /var/run/utmpx (參見“man utmpx”)有此資訊。如果執行“who”,您會看到 who 命令可以判斷您是否從遠端節點連接(甚至知道您從哪裡連接)。
因此,您始終可以使用 who 命令並調整輸出來確定這一點。
附註:我相信上面的答案(關於使用 SSH_CONNECTION)是一個更好的解決方案。