首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SCP命令澄清

SCP命令澄清
EN

Stack Overflow用户
提问于 2013-10-22 04:06:13
回答 2查看 1.6K关注 0票数 1

我使用scp命令从远程服务器中提取一些文件,命令的一个变体不起作用。

在远程服务器中有两个文件名为one.xml和two.xml,我使用以下命令将这两个文件拖到当前的dir中:

代码语言:javascript
复制
scp stuadmin@10.44.220.112:/student/class/Intermediate/one.xml .
scp stuadmin@10.44.220.112:/student/class/Intermediate/two.xml .

上面的命令运行良好,但如果我使用通配符在一次操作中提取所有xml文件,如下所示,它将返回scp: No match.

代码语言:javascript
复制
scp stuadmin@10.44.220.112:/student/class/Intermediate/*.xml .

如果我单独地提取文件,如果我尝试使用通配符来拉动文件,它为什么会工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-22 04:19:02

是的,这是给SuperUser的。答案是因为星号在命令运行之前先进行通配符扩展。它是由你的外壳展开的。echo *.xml将真正运行echo file1.xml file2.xml,这就是echo所看到的,而bash则看到*.xml

由于要将多个文件和路径传递给SCP,所以它会被混淆,因为第一个参数(或第二个参数)不是主机:/path。

将“echo”放在命令前面,以查看正在执行的是什么。您不能在远程主机上使用通配符(除非您先转义它们)。

票数 1
EN

Stack Overflow用户

发布于 2013-10-22 04:11:52

你可以从这些结果中澄清。

您可以通过隧道ssh连接来大大简化这个过程(请参阅前面的答案)。我这样做的方法是在本地系统上创建一个. .ssh/config文件,其中包含以下条目:

代码语言:javascript
复制
Host SYSTEM3
        ProxyCommand    ssh -e none SYSTEM2 exec /usr/bin/nc %h %p 2>/dev/null
        HostName        SYSTEM3.full.domain
        User            system3user

Host SYSTEM2
        ProxyCommand    ssh -e none SYSTEM1 exec /usr/bin/nc %h %p 2>/dev/null
        HostName        SYSTEM2.full.domain
        User            system2user

Host SYSTEM1
        HostName        SYSTEM1.full.domain
        User            system1user

(这是假设两个中间主机都将netcat安装为/usr/bin/nc -如果没有安装,您可能必须找到/安装一些将stdin&stdout网关存储到TCP会话中的等效方式。)

通过这种设置,您可以在本地使用scp SYSTEMn 3: /data /data,它将自动通过SYSTEM1和SYSTEM2 (并按顺序询问三个SYSTEMn的密码--这可能有点混乱,特别是如果键入错误的话)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19508766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档