Python subprocess.call странное поведение с несколькими вызовами

1

Я пытаюсь вызвать команды 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

  • 1
    Это странно, поскольку между двумя фрагментами кода нет существенной разницы: второй пример выполняет некоторую побитовую арифметику со значениями результата call (), но не влияет на сами вызовы. Вы пытались создать сценарий, чтобы увидеть, что он делает?
  • 0
    Это работает, если вы замените call на Popen ?
Теги:
subprocess

2 ответа

0

Ваша проблемная версия всегда работает для меня. Я думаю, что это сетевая проблема, особенно потому, что вы указываете, что она работает в гигабитных LAN.

0

Похоже, вы не ищете результат вызова в первом методе.

if call(shlex.split(cmd1))!=0:
    call(shlex.split(cmd2))
  • 0
    Я попробовал это (проверка на ноль, ненулевой код возврата), но, похоже, он тоже не работает.
  • 1
    что странно, это именно то, что call(shlex.split(cmd1)) & call(shlex.split(cmd2)) вторая строка call(shlex.split(cmd1)) & call(shlex.split(cmd2))
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню