使用PuTTY向远程ftp命令提供密码和命令

时间:2016-03-22 05:18:14

标签: batch-file ssh ftp putty

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

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

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

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

批处理文件:

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>

1 个答案:

答案 0 :(得分:1)

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

所以shell执行ftp并等待它退出,然后进入mypass行(最终尝试执行它并失败,因为它不是一个可识别的shell命令)。 / p>

您可以做的是使用Plink而不是PuTTY。 Plink中的Plink是用于自动化的PuTTY包(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