知道使用者正在透過 shell 腳本進行 sshing?

知道使用者正在透過 shell 腳本進行 sshing?

我有一個 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_CLIENTSSH_TTY僅在透過 SSH 登入時定義。

答案3

我相信 /var/run/utmpx (參見“man utmpx”)有此資訊。如果執行“who”,您會看到 who 命令可以判斷您是否從遠端節點連接(甚至知道您從哪裡連接)。

因此,您始終可以使用 who 命令並調整輸出來確定這一點。

附註:我相信上面的答案(關於使用 SSH_CONNECTION)是一個更好的解決方案。

相關內容