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 требует этих дополнительных одинарных кавычек.