我有一个批处理文件,用于通过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
文件即可运行它。但我无法实现它。任何想法或片段都会对我有帮助。
答案 0 :(得分:24)
您需要将psftp脚本(open
到bye
的行)存储到单独的文件中,并使用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设置