PuTTY / PSFTP文件传输自动化的批处理文件

问题描述 投票:14回答:2

我有一个批处理文件,用于通过SFTP将文件从本地PC移动到服务器。我的系统中安装了PuTTY,后面是批处理文件代码。

cd C:\Program Files (x86)\PuTTY
psftp
open <IP>
<user>
<PW>
cd /home/irisuser/iris/integration/dls_dlsblr_dlschnn_in_msg/in
lcd d:\
put log.sh
bye

当我在命令提示符下键入它时,上面的代码完全有效。但是,当我双击.bat文件并运行它时,它没有运行并要求输入用户名和密码。我的目标是自动化整个事情,我需要通过单击.bat文件来运行它。但我无法实现它。任何想法或片段都会对我有所帮助。

batch-file cmd sftp putty psftp
2个回答
24
投票

您需要将psftp脚本(从openbye的行)存储到一个单独的文件中,并使用psftp开关将其传递给-b

cd "C:\Program Files (x86)\PuTTY"
psftp -b script.txt

假设script.txtC:\Program Files (x86)\PuTTY。或者提供一个完整的路径(不要忘记将路径括在双引号中,特别是如果它包含空格。最好使用cd命令执行此操作)。

参考: https://the.earth.li/~sgtatham/putty/latest/htmldoc/Chapter6.html#psftp-option-b


编辑:对于用户名+密码:由于您不能在批处理文件中使用psftp命令,出于同样的原因,您不能将用户名和密码指定为psftp命令。这些是open命令的输入。虽然您可以使用open命令(open <user>@<IP>)指定用户名,但您无法通过这种方式指定密码。这可以仅在psftp命令行上完成。然后在命令行上执行所有操作可能更干净:

cd "C:\Program Files (x86)\PuTTY"
psftp -b script.txt <user>@<IP> -pw <PW>

并从你的open删除<user><PW>script.txt线。

参考: https://the.earth.li/~sgtatham/putty/latest/htmldoc/Chapter6.html#psftp-starting https://the.earth.li/~sgtatham/putty/latest/htmldoc/Chapter3.html#using-cmdline-pw


你在做什么是你运行没有任何参数或命令的psftp。退出后(例如输入bye),批处理文件继续尝试运行open命令(以及其他命令),Windows shell显然无法理解。


如果您确实希望将所有内容保存在一个文件(批处理文件)中,则可以将命令写入psftp标准输入,例如:

(
    echo cd ...
    echo lcd ...
    echo put log.sh
) | psftp -b script.txt <user>@<IP> -pw <PW>

0
投票
set DSKTOPDIR="D:\test"
set IPADDRESS="23.23.3.23"

>%DSKTOPDIR%\script.ftp ECHO cd %PAY_REP%
>>%DSKTOPDIR%\script.ftp ECHO mget *.report
>>%DSKTOPDIR%\script.ftp ECHO bye

:: run PSFTP Commands
psftp <domain>@%IPADDRESS% -b %DSKTOPDIR%\script.ftp

在上面的行之前使用set命令设置值。

我相信这会对你有所帮助。

裁判sftp设置为以下链接qazxsw poi

© www.soinside.com 2019 - 2024. All rights reserved.