如何在交互式 SSH 会话开始时注入命令?

发布于 2024-12-08 10:22:53 字数 183 浏览 0 评论 0原文

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

有什么想法吗?

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

I want to be able to just ssh to a server where I cannot modify profiles and set up the environment with several commands before getting the usual interactive session.

Any ideas?

I've been using an expect script with an "interact" command at the end - which works for most things but is clumsy and breaks some console apps. Also been extermienting with empty-expect and socat. Any other suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

她如夕阳 2024-12-15 10:22:53

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

ssh [email protected] -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

If you're able to write somewhere on the filesystem, you may be able to invoke bash with a custom rc file like this:

ssh [email protected] -t bash --rcfile /home/user/my_private_profile -i

Note that this appears to only work for interactive shell, not login shells. The -t option to ssh makes it allocate a pty even though you're specifying a command.

If you can't write to the filesystem anywhere, you could use a subshell to supply a named pipe as the rcfile:

$ ssh ares -t "bash --rcfile <(echo 'FOO=foo';echo 'BAR=bar') -i"
axa@ares:~$ echo $FOO
foo
axa@ares:~$ echo $BAR
bar
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文