我正在尝试启动一个由bash命令创建的交互式ssh会话(如下面所示)。
如果我不添加“ttt”,我只会收到一条“非交互式”会话消息,而ssh会话将被关闭。
添加“ttt”标志后,会话将保持打开状态,但我无法输入命令或与远程会话交互。
这是我正在尝试执行的命令的简化版本
echo "username@host" | xargs -I{} bash -x -c 'ssh -ttt" $0' {}不确定是否有需要添加的附加标志,也不确定是否有其他方法进行此操作。
发布于 2021-09-20 18:31:21
xargs的输入(因此是bash,因此是ssh)来自管道,而不是终端。根据更大的上下文,其中一个选项应该可以让ssh从终端读取:
for循环而不是xargs。就像这样:
“${ hostarray @}”中主机的readarray -t hostarray< <(echo "username@ host ");完成ssh "$host“操作-o选项添加到xargs,它告诉它从/dev/tty (即终端)重定向命令的stdin。顺便说一句,除了ssh没有得到它应该得到的输入(也就是从终端获得的输入)的问题之外,您还可能很难盗取其他目的的输入,比如希望xargs读取的主机列表中的部分内容。请参阅BashFAQ #89:我正在逐行读取文件并运行ssh或ffmpeg,只有第一行被处理!
https://stackoverflow.com/questions/69255708
复制相似问题