BASH - 将SSH输出分配给变量

时间:2017-05-11 17:37:17

标签: bash shell ssh variable-assignment

我已经阅读了我能找到的有关此问题的所有主题,但我还没有找到解决问题的方法。

首先让我说我正在尝试在非常严格的环境中完成这项工作,所以我没有选择搞乱配置或任何其他管理类型的功能。

代码:

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

如果我无法使用这一行,我真的没有任何应急计划,所以如果你能提供帮助,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

请试一试。我能够连续至少10次这样做

output=$(sshpass -f <(printf '%s\n' $password) ssh user:@host "sudo ls");
echo $output;

此命令使用sshpass以非交互方式将密码传递给ssh命令。