我不太清楚问题是什么。我正在使用Kali Linux 2.0,全新安装。以下是Ubuntu 14.04的工作,但它不再工作了(也许我不小心改了吗?)。它看起来对我来说是正确的,但每次运行都会阻塞。
backup_folder=$(ssh -i /home/dexter/.ssh/id_rsa $server 'ls -t '$dir' | head -1')
这是一个更大的脚本的一部分。 $ server和$ dir已设置。当我单独运行命令时,我得到正确的输出,但它不会结束连接。
答案 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
显然是一个示例界面,使用您自己的界面。