Могу ли я контролировать PSFTP из скрипта Python? - PullRequest
2 голосов
/ 07 сентября 2010

Я хочу запустить PSFTP и управлять им из скрипта Python, чтобы загружать файлы журналов из коробки UNIX на мой компьютер с Windows.

Я могу запустить PSFTP и войти в систему, но когда я пытаюсь выполнить команду удаленно, такую ​​как 'cd', она не распознается PSFTP и просто запускается в терминале при закрытии PSFTP.

Код, который я пытаюсь запустить, выглядит следующим образом:

import os

os.system("<directory> -l <username> -pw <password>" )
os.system("cd <anotherDirectory>")

Мне просто интересно, возможно ли это на самом деле. Или, если есть лучший способ сделать это в Python.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 07 сентября 2010

Вам нужно будет запустить PSFTP как подпроцесс и напрямую общаться с процессом. os.system порождает отдельный подоболочек каждый раз, когда он вызывается, поэтому он не работает, как последовательный набор команд в окне командной строки. Посмотрите документацию для стандартного модуля Python subprocess. Вы должны быть в состоянии достичь своей цели оттуда. Кроме того, есть несколько доступных пакетов Python SSH, таких как paramiko и Twisted . Если вы уже довольны PSFTP, я бы все же попытался сначала заставить его работать.

Подсказка модуля подпроцесса:

# The following line spawns the psftp process and binds its standard input
# to p.stdin and its standard output to p.stdout
p = subprocess.Popen('psftp -l testuser -pw testpass'.split(), 
                     stdin=subprocess.PIPE, stdout=subprocess.PIPE)
# Send the 'cd some_directory' command to the process as if a user were 
# typing it at the command line
p.stdin.write('cd some_directory\n')
1 голос
/ 08 сентября 2010

На этот вопрос вроде ответили: SFTP на Python?(не зависит от платформы)

http://www.lag.net/paramiko/

Преимущество подхода на основе чистого Python заключается в том, что вам не всегда нужен установленный psftp.

...