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

时间:2013-05-08 11:06:16

标签: batch-file cmd sftp putty psftp

我有一个批处理文件,用于通过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文件即可运行它。但我无法实现它。任何想法或片段都会对我有帮助。

2 个答案:

答案 0 :(得分:24)

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

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

假设script.txt位于C:\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>

答案 1 :(得分:0)

class Model(models.Model): #Plusieurs models pour une marque
    # ...
    marque = models.ForeignKey(
        Marque,
        on_delete=models.CASCADE,
        null=True,
        default=None
    )

在上述各行之前使用set命令设置值。

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

请参考以下链接https://www.ssh.com/ssh/putty/putty-manuals/0.68/Chapter6.html的psfpt设置