【发布时间】:2021-09-28 18:10:21
【问题描述】:
我想通过 ssh 连接到远程机器,使用 heredoc 自动执行一些代码,然后为用户提供 bash 提示,以便根据需要手动执行进一步的命令。
到目前为止我尝试过(选项 1)
ssh user@host << 'EOF'
echo "Hello"
EOF
这会很好地打印出“Hello”,但会关闭 ssh 连接并退出脚本。我也得到了臭名昭著的“伪终端将不会被分配,因为标准输入不是终端。”
使用单个 -t 开关的结果相同。
接下来我尝试了(选项 2)
ssh -tt user@host << 'EOF'
echo "Hello `uname -n`"
EOF
哪个工作,但会产生一组奇怪的输出:
Success. Logging you in...
echo "Hello"
echo "Hello"
[remote]$ echo "Hello"
Hello
[remote]$ <
尝试不使用heredoc,比如
ssh user@host 'echo "Hello"; /bin/bash'
但 echo 将在不同的 shell 上执行
到目前为止,选项 2 让我最接近。欢迎任何其他解决方案!
【问题讨论】:
-
也许像
ssh -t user@host <<< "commands; exec bash"这样的东西会起作用。目前无法尝试。