Я пытаюсь вызвать команды remote (ssh), используя такую функцию subprocess.call.
import shlex
from subprocess import call
cmd1='ssh [email protected] mkdir temp'
cmd2='scp test.txt [email protected]:temp'
call(shlex.split(cmd1))
call(shlex.split(cmd2))
Когда я вызываю это, mkdir, похоже, не выполняется, хотя в документации для subprocess.call говорится, что он ждет выполнения перед возвратом. Задержка отдельных вызовов ssh составляет около 0,5 секунды. Кажется, что он отлично работает на гигабитной локальной сети, где латентность почти равна нулю.
Однако он работает нормально, когда вызовы выполняются следующим образом:
call(shlex.split(cmd1)) & call(shlex.split(cmd2))
В чем проблема с первым подходом?
Спасибо, Miliana
Ваша проблемная версия всегда работает для меня. Я думаю, что это сетевая проблема, особенно потому, что вы указываете, что она работает в гигабитных LAN.
Похоже, вы не ищете результат вызова в первом методе.
if call(shlex.split(cmd1))!=0:
call(shlex.split(cmd2))
call(shlex.split(cmd1)) & call(shlex.split(cmd2))
вторая строка call(shlex.split(cmd1)) & call(shlex.split(cmd2))
call
наPopen
?