【问题标题】:How to inject commands at the start of an interactive SSH session?如何在交互式 SSH 会话开始时注入命令?
【发布时间】:2011-12-01 10:23:18
【问题描述】:

我希望能够只 ssh 到无法修改配置文件的服务器,并在获得通常的交互式会话之前使用多个命令设置环境。

有什么想法吗?

我一直在使用期望脚本,最后带有“交互”命令 - 它适用于大多数事情,但很笨拙并且会破坏一些控制台应用程序。也一直在用empty-expect和socat来消除。还有其他建议吗?

【问题讨论】:

标签: ssh expect openssh


【解决方案1】:

如果您能够在文件系统上的某个位置进行写入,则可以使用这样的自定义 rc 文件调用 bash:

ssh me@example.com -t bash --rcfile /home/user/my_private_profile -i

请注意,这似乎只适用于交互式 shell,而不适用于登录 shell。 ssh 的 -t 选项使其分配一个 pty,即使您指定了一个命令。

如果你不能在任何地方写入文件系统,你可以使用一个子shell来提供一个命名管道作为rcfile:

$ ssh ares -t "bash --rcfile <(echo 'FOO=foo';echo 'BAR=bar') -i"
axa@ares:~$ echo $FOO
foo
axa@ares:~$ echo $BAR
bar

【讨论】:

  • 干杯,但恐怕没有帮助。我已经在使用 -t 和 -tt - 我真的无法写入文件系统。这是一个 PITA :)
  • 你不能把文件推到/tmp吗?
  • 即使没有,请参阅我的扩展答案。
猜你喜欢
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-05
  • 2016-03-11
  • 1970-01-01
相关资源
最近更新 更多