我已经阅读了我能找到的有关此问题的所有主题,但我还没有找到解决问题的方法。
首先让我说我正在尝试在非常严格的环境中完成这项工作,所以我没有选择搞乱配置或任何其他管理类型的功能。
代码:
ssh -t username@host "sudo -u user hadoop fs -ls /"
运行它会返回我要查找的输出,但下一行将挂起并且不会将输出分配给变量:
output=$(ssh -t username@host "sudo -u user hadoop fs -ls")
我已经尝试了我能找到的这一行的任何和所有变体。如果我做变量的回声,它只是吐出一个空行。 -t选项的原因是因为没有它我得到了一个错误:
sudo: no tty present and no askpass program specified
sudo: pam_authenticate: Conversation error
如果我无法使用这一行,我真的没有任何应急计划,所以如果你能提供帮助,我们将不胜感激。
答案 0 :(得分:1)
请试一试。我能够连续至少10次这样做
output=$(sshpass -f <(printf '%s\n' $password) ssh user:@host "sudo ls");
echo $output;
此命令使用sshpass以非交互方式将密码传递给ssh命令。