我有一些文件需要从机器B(linux)到机器C的sftp。我们需要在机器A(Windows Server 2003)中启动任务,并在Windows Scheduler中计划此任务。我该怎么做?
我会像这样交互式地进行操作:
我该如何使用Windows机器A中的脚本执行此操作?我无法安装任何其他软件来提供帮助。
最佳答案
您提到了ftp,telnet和sftp。这些脚本可以通过诸如Expect之类的脚本编写,也可以通过A上的某些复杂脚本编写。但是,您也许可以使用unix技巧从A做到这一切。您需要能够从A切换到B,从B到C。您将需要身份验证设置,因此这些连接不需要密码。 (您可以对两个连接都使用代理在A上转发身份。)然后在A上运行类似的操作:
cat file-on-a | ssh B "ssh C 'cat > file-on-c'"
这将通过B将文件从A移到C,而无需将文件存储在B上。
在使用Cygwin的ssh和cat之前,我已经在Windows上完成了此类操作。我不知道它与其他Windows工具一起使用的效果如何...
编辑:我应该对这两个命令说两个字。 ssh程序提供了各种管道来在本地计算机和远程计算机之间来回移动数据。通常,此管道连接到远程端上的 shell ,除了具有更高的安全性之外,它的作用与telnet相同。但是,此管道可以用于任何东西。 sftp实用程序使用该管道来移动文件。 ssh命令可以接受要在远程系统上执行的命令。例如,
ssh B ls
将连接到B,运行ls,然后将结果发送回给您。上面的命令所执行的操作是SSH到B,并要求B运行与C相连的ssh。这使我们有了从A到B再到C的管道。现在,两端该怎么做? cat
程序读取文件并将其写入标准输出。如果未提供文件名,则它将读入标准文件。cat file-on-a
在A
机器上读取文件,并将其写入ssh
命令。 cat > file-on-c
读取发送给它的数据,> file-on-c
部分(由于 shell )将其写入文件file-on-c
。同样,不确定在您的环境中这是否是一个选项。希望能帮助到你。
关于windows - 如何使用机器A自动将sftp从机器B传送到机器C?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9835197/