【发布时间】:2017-08-16 14:12:31
【问题描述】:
假设我运行以下命令:
user1@172.50.50.50:~$ ssh user2@172.51.51.51:/Documents
user2@172.51.51.51:~/Documents$ cd ~/Desktop/
user2@172.51.51.51:~/Desktop$ pwd
/home/user2/Desktop
有没有办法让我从 172.50.50.50 上的另一个进程的 ssh 进程的 pid 中获取路径 /home/user2/Desktop?
我想也许它会在/proc/<SSH PID>/ 的某个地方,但我想不通。
【问题讨论】:
-
你有权限阅读别人的
proc目录吗? -
客户端根本不存在该信息;正如托比的回答所说,服务器从不通过网络发送它。也就是说,你为什么认为你需要它?有更好的方法来做任何可能依赖于信息的事情(例如,如果您试图从远程驱动一个长时间运行的交互式会话,停止这样做,而是打开一个新的为您想要的每个单独命令通过相同的传输通道,在您启动它时根据该命令更改目录)。
-
(“通道”和“传输”是 SSH 协议术语,但您可以使用 OpenSSH 的 ControlMaster 和 ControlSocket 配置旋钮访问相同的功能)。
-
另一个相关的事情是当你
cd ~/Desktop时,你甚至根本没有改变服务器上ssh进程的工作目录;您只是在更改 ssh 进程启动的 shell 的工作目录。 SSH 服务器不知道cd命令对 shell 意味着什么,这不是它的工作——它只是将字符发送到 shell 并读回输出。 -
@CharlesDuffy 我使用 i3 作为我的窗口管理器。我有一个我使用的 bash 脚本,因此当我点击 $mod+Enter 时,它会在当前聚焦的窗口中找到 shell 的 cwd,然后在同一目录中打开一个新终端。当我被 sshed 到另一个盒子时,我希望同样的事情发生。如果我想让它发挥作用,我似乎需要更有创造力。谢谢