【发布时间】:2019-07-03 01:35:22
【问题描述】:
我有一个脚本,它使用 SCP 从 AWS 上的远程 Linux 主机中提取文件。在每晚运行相同的代码大约 6 个月没有问题后,它今天开始以protocol error: filename does not match request 失败。我在下面一些更简单的文件名上重现了这个问题:
$ scp -i $IDENT $HOST_AND_DIR/"foobar" .
# the file is copied successfully
$ scp -i $IDENT $HOST_AND_DIR/"'foobar'" .
protocol error: filename does not match request
# used to work, i swear...
$ scp -i $IDENT $HOST_AND_DIR/"'foobarbaz'" .
scp: /home/user_redacted/foobarbaz: No such file or directory
# less surprising...
我使用单引号的原因是我最初抓取了一个名称中带有空格的文件。为了处理空格,我已经做了好几个月的$HOST_AND_DIR/"'foo bar'",但是从今天开始,它只接受$HOST_AND_DIR/"foo\ bar"。所以,我的问题已解决了,但我仍然对发生了什么感到好奇。
我用谷歌搜索了错误消息,但我没有看到任何真正的提及,这让我感到惊讶。
所涉及的两个主机在ssh -v localhost 的输出中都有OpenSSL 1.0.2g,而bash --version 表示GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
有什么想法吗?
【问题讨论】:
-
这不是一个有用的评论,但我今天才开始收到这个,因为我已经每小时运行了一个月。只有在 ubuntu 上安装更新后才会发生。
-
我在这里发布了关于此功能的另一个问题:unix.stackexchange.com/questions/499958/…