Из Python запускайте команды WinSCP в консоли - PullRequest
1 голос
/ 04 июня 2019

Мне нужно запустить несколько команд WinSCP из класса Python, используя подпроцесс.

Цель состоит в том, чтобы подключить локальный компьютер Windows и сервер Windows без установленного FTP и загрузить некоторые файлы. Это то, что я пытался

python    
proc = subprocess.Popen(['WinSCP.exe', '/console', '/WAIT',  user:password@ip:folder , '/WAIT','get' ,'*.txt'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

При этом я могу открыть консоль WinSCP и подключиться к серверу, но она не выполняет команду get. Проблема в том, что get выполняется в консоли Windows, а не в консоли WinSCP?

Я также пытался заменить winscp.exe /console на winscp.com /command.

Есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 04 июня 2019

Таким образом, при использовании опции /script вы должны указать файл, содержащий пакетные команды.

Чтобы указать все команды в командной строке, как вы делаете, используйте параметр /command вместо /script.

0 голосов
/ 05 июня 2019

Если вы хотите обойтись без создания файла сценария, вы можете использовать код, подобный следующему:

import subprocess

process = subprocess.Popen(
    ['WinSCP.com', '/ini=nul', '/command',
     'open ftp://user:password@example.com', 'get *.txt', 'exit'],
    stdout=subprocess.PIPE, stderr=subprocess.PIPE)
for line in iter(process.stdout.readline, b''):  # replace b'' with '' for Python 2
    print(line.decode().rstrip())

Код использует:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...