windows - 如何使用机器 A 自动从机器 B 到机器 C 的 sftp?

标签 windows automation telnet

我有一些文件需要通过 sftp 从机器 B (linux) 传输到机器 C。我们需要在机器 A (windows server 2003) 中启动任务并在 Windows 调度程序中安排它。我该怎么做?

我会像这样交互式地做:

  1. 将文件从机器A ftp 到机器B。
  2. telnet 到机器 B。
  3. 通过telnet,sftp从B机到C机,把B机的文件放到C机。

我如何在 Windows 机器 A 中使用脚本执行此操作?我无法安装任何其他软件来提供帮助。

最佳答案

您提到了 ftp、telnet 和 sftp。这些可以通过诸如 expect 之类的东西编写脚本,或者通过 A 上的一些可能复杂的脚本编写。但是,您可以使用这个 unix 技巧从 A 完成所有操作。您需要能够从 A ssh 到 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 自动从机器 B 到机器 C 的 sftp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9835197/

相关文章:

linux - 如何为应用程序创建 Telnet 接口(interface)

c - 当进程尚未完成时,GetExitCodeProcess() 返回 1

python套接字不在windows中发送数据

python - 关于构建 selenium/python 框架的建议?

ios - FaSTLane 健身房失败退出状态 : 1 although Archive Succeeded

java - 扩展页面对象类

python - 如何使用 Python 库(例如 Paramiko)与 Telnet 和 SSH 进行链式连接

php - 使用php Telnet到cisco交换机

java - 64位的java可以和32位的tomcat一起使用吗

java - 写入文件时JNA无效的内存访问