pexpect "нет такого файла или каталога" для команды bash, которая работает

sCMD = 'ssh user@host cat some/path | grep "Oct 31\|Oct 30"'
child = pexpect.spawn(sCMD)
try:
    child.expect("assword")
except pexpect.EOF:
    raise Exception("Cannot connect to host")
child.sendline(ssh_pass)
lData = [s.strip(' \n\r:') for s in child.readlines()]

lData[0] гласит: "Нет такого файла или каталога"

если я изменю первую строку следующим образом:

sCMD = 'ssh user@host cat some/path'

Тогда lData содержит все строки из файла.

Но если я выполняю ту же самую команду (с помощью grep) в терминале, она работает нормально - она ​​возвращает ожидаемый текст. Претензий нет.

Любая идея, почему команда работает по-разному при выполнении через pexpect?

1 ответ

Решение
sCMD = 'ssh user@host \'cat some/path | grep "Oct 31\|Oct 30"\''

по какой-то причине pexpect требует этих дополнительных одинарных кавычек.

Другие вопросы по тегам