gpt4 book ai didi

linux - ssh 远程命令未按预期工作(读取问题)

转载 作者:太空狗 更新时间:2023-10-29 11:12:16 25 4
gpt4 key购买 nike

我的服务器上有一个名为 test.sh 的脚本:

#!/bin/bash
read -p "Select an option [1-4]: " option
echo "You have selected $option"

当我通过 ssh 手动运行它时,我看到了这个:

me@me:~$ ssh root@server
root@server's password:
[...]
root@server:~# bash test.sh
Select an option [1-4]: 48
You have selected 48

当我将它作为 ssh 远程命令运行时,我看到了这个:

me@me:~$ ssh root@server 'bash test.sh'
root@server's password:
48
You have selected 48

我对此输出不满意,因为它缺少 Select an option [1-4]: 提示字符串和我派生的原始脚本 test.sh 包含很多像这样的交互式对话字符串,我都需要它们。

我知道 read 将提示打印到 stderr 所以我尝试使用以下命令启动脚本以防 stderr 被省略,但输出仍然相同:

ssh root@server 'bash test.sh >&2'
ssh root@server 'bash test.sh' >&2
ssh root@server 'bash test.sh 2>&1'
ssh root@server 'bash test.sh' 2>&1

为什么会发生这种情况以及如何使 ssh 远程命令按预期工作?

UPD

我已将 test.sh 更改为:

#!/bin/bash
echo Connected
read -p "Select an option [1-4]: " option
echo "You have selected $option"

但输出仍然缺少提示字符串:

me@me:~$ ssh root@server 'bash test.sh'
root@server's password:
Connected
66
You have selected 66

最佳答案

您需要在 ssh 中使用 -t 选项来为 ssh session 分配一个伪终端:

ssh -q -t root@server 'bash test.sh'

关于linux - ssh 远程命令未按预期工作(读取问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45838637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com