使用 PuTTY 向远程 ftp 命令输入密码和命令

Feeding password and commands to remote ftp command using PuTTY

我想自动执行将文件从 Windows FTP 位置复制到我的 Windows 7 机器上的 Unix 机器的过程。

我已经设法搜索网络并成功地使用 SSH 和 PuTTY 连接到 Unix 机器。

PuTTY 的输入文件包含命令,但它停在密码处,我找不到解决这个问题的方法。

为此,我创建了一个批处理文件,因此我可以在我的 Windows 7 机器上安排一个 Windows 作业,每天开始从 Windows FTP 服务器(其他 Windows 机器不是我的)到 Unix 机器。

批处理文件:

putty -ssh lxdsdsp0  -l "user_1" -pw "mypass" -m "D:\cmd.txt" -t

我的cmd.txt

cd /x06/scratch-data/ 
ftp domain\user_1@winapp67.sr.dv.com
mypass
/bin/bash

当我执行我的批处理文件时,它通过 SSH 登录到 Unix 框并键入命令,但当我将我的密码作为 PuTTY cmd.txt 文件中的输入文件时停止。

请帮忙。

Using username "user_1".

Welcome to SuSE Linux Enterprise Server 9 (x86_64)

Connected to domain\user_1@winapp67.sr.dv.com.
220 Microsoft FTP Service
331 Password required for domain\user_1.
Password:
530 User domain\user_1 cannot log in.
ftp: Login failed.
ftp>

cmd.txt 的内容由远程 shell 逐行执行。内容未被使用,就像您在键盘上键入这些命令一样。

所以 shell 执行 ftp 并等待它退出,然后再继续到 mypass 行(最终尝试执行它并失败,因为它不是已识别 shell 命令)。

您可以做的是使用 Plink 而不是 PuTTY。 PuTTY 包中的工具中的 Plink 用于自动化(PuTTY 不是)。它是一个控制台应用程序。因此,您可以从 cmd.txt 重定向其输入。然后将使用这些内容,就像您在键盘上键入这些命令一样。

plink.exe -ssh lxdsdsp0 -l "user_1" -pw "mypass" -t < D:\cmd.txt

另见 How to pass user input automatically using plink.exe