我必须将文件从一台服务器传输到另一台服务器。我用PuTTY登录第一个,然后输入:
sftp -v -oIdentityFile=path username@host
cd path
put file
一切都很完美!现在我正在尝试使用批处理文件。在.bat我有:
putty.exe -ssh host1 -l username1 -pw password1 -m script.txt
在script.txt
文件中:
sftp -v -oIdentityFile=path username2@host2
cd path
put file
exit
它连接到服务器号码2但随后停止。前缀sftp>
未出现,并且未读取以下行。你有什么建议吗?
答案 0 :(得分:1)
远程shell接受命令并逐个执行。所以它执行sftp
,等待它退出(它从未做过),然后它才会执行cd
命令(但是在shell中,而不是sftp
), put
(因为不是shell命令而失败)等等。
如果您的目的是模拟在终端上输入命令,请使用Plink并输入重定向。
Plink (PuTTY command-line connection tool)是来自PuTTY软件包的工具,其工作方式与PuTTY类似,但它是一个控制台,而不是GUI应用程序。因此,它可以使用输入/输出重定向。无论如何,Plink是自动执行任务的工具,而不是PuTTY。
plink.exe -ssh host1 -l username1 -pw password1 < script.txt
有关详情,请参阅超级用户How to type commands in PuTTY by creating batch file?。