【发布时间】:2019-12-19 12:27:35
【问题描述】:
我有一个带有几个缓存键的远程服务器,我正在尝试删除它们。但是,我在运行脚本时遇到错误。
这是我目前正在使用的脚本。另外,我设置了公共 ssh 密钥,因此我不必输入密码:
input="path to file"
while IFS= read -r line; do
ssh -tt user@192.168.20.59 "sudo -S rm $line"
done < "$input"
如果我尝试循环外的 ssh 命令将按预期工作。我不知道为什么循环会影响命令
我得到的错误是:
No such file or directory3f971a5e192fb9332c764a636a4205f
connection to 192.168.20.59 closed.
提前谢谢你
注意: 通过修改生成文件的脚本修复了该问题。出于某种原因,在行尾添加了 ^M。我使用 echo & cat 生成文件并避免外来字符
【问题讨论】:
-
报错中“目录”后面真的没有空格吗?
-
与错误无关,但循环只会处理文件的第一行。对
ssh使用-n选项。见stackoverflow.com/questions/9393038/… -
您如何回答
sudo密码提示,因为输入是从文件重定向的? -
@andregr_jp:拿起Barmar的第一条评论:难道
$input包含回车符? -
@JoaoVitorino 这是针对另一个问题的解决方案,OP 声称他没有(但我不知道为什么)。这是我链接到的另一个副本。
标签: bash ssh while-loop rm