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

3
我希望能够通过ssh登录到一个我无法修改配置文件的服务器,并在获取交互式会话之前通过几个命令设置环境。你有什么建议吗?
我一直在使用expect脚本,在结尾处加上"interact"命令,这对大多数情况都有效,但是有些控制台应用程序却不适用。我也尝试了empty-expect和socat。还有其他建议吗?

糟糕,刚看到你不能编辑个人资料。 - ott--
这大致是我想要实现的:https://dev59.com/VHI-5IYBdhLWcg3w3crS#1634179 但它仍然会破坏一些东西。 - Paul Hedderly
1个回答

3

如果您能够在文件系统的某个位置写入文件,您可以使用自定义的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,并且我真的无法写入文件系统。这真是个麻烦 :) - Paul Hedderly
你连把文件推到 /tmp 目录下都做不到吗? - Andrew Aylett
即使不是,也请查看我的详细回答。 - Andrew Aylett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接