尝试将命令输出存储到变量时ssh阻塞

时间:2015-10-16 09:21:03

标签: bash ssh sshd

我不太清楚问题是什么。我正在使用Kali Linux 2.0,全新安装。以下是Ubuntu 14.04的工作,但它不再工作了(也许我不小心改了吗?)。它看起来对我来说是正确的,但每次运行都会阻塞。

backup_folder=$(ssh -i /home/dexter/.ssh/id_rsa $server 'ls -t '$dir' | head -1')

这是一个更大的脚本的一部分。 $ server和$ dir已设置。当我单独运行命令时,我得到正确的输出,但它不会结束连接。

1 个答案:

答案 0 :(得分:2)

我不知道这是否有助于解决问题,但您的命令不会处理文件名中带有空格的目录。在单引号部分中添加双引号,如下所示:

SERVER='remoteServer' && REMOTE_DIR='remoteDir' && backup_folder=$(ssh -i /home/dexter/.ssh/id_rsa "${SERVER}" 'ls -t "'${REMOTE_DIR}'" | head -n1'); echo "${backup_folder}"

如果它没有帮助尝试将越来越多的-v切换到ssh以调试最终到达:

SERVER='remoteServer' && REMOTE_DIR='remoteDir' && backup_folder=$(ssh -vvv -i /home/dexter/.ssh/id_rsa "${SERVER}" 'ls -t "'${REMOTE_DIR}'" | head -n1'); echo "${backup_folder}"

如果详细输出没有帮助可能是MTU问题(这类问题不是二进制类型,行为奇怪)。

您可以尝试降低MTU(通常为1500)来解决:

sudo ifconfig eth0 mtu 1048 up

eth0显然是一个示例界面,使用您自己的界面。