Команды конвейера в plink в командной строке Windows

Я использую Python для автоматизации установки пакетов в Linux. я использую plink для подключения к Linux Box. Сначала мне нужно получить информацию об уже установленных на коробке определенных оборотах. для этого я команда

os.system('plink root@server -pw pass rpm -qa|grep string > rpm.txt')

Здесь командная строка интерпретирует '|' как команду cmd и выдает ошибку «grep не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл».

Также rpm.txt создается на моей машине, а не на Linux.

В любом случае, я могу использовать '|', а также убедиться, что 'rmp.txt' создан в окне Linux?


person user2739601    schedule 04.09.2013    source источник
comment
Вы пытались избежать |?   -  person amadain    schedule 04.09.2013
comment
@amadain да, я пытался избежать '|' но все равно происходит то же самое   -  person user2739601    schedule 04.09.2013
comment
как насчет ff=subprocess.Popen(plink root@server -pw pass rpm -qa,shell=False,stdin=subprocess.PIPE) ff.communicate(grep string › rpm.txt)?   -  person amadain    schedule 04.09.2013
comment
@amadain Спасибо, чувак, это сработало.   -  person user2739601    schedule 04.09.2013
comment
жаль, что я не поставил это как ответ   -  person amadain    schedule 04.09.2013
comment
Я поставил это как ответ, чтобы кто-то еще мог найти его полезным.   -  person amadain    schedule 04.09.2013


Ответы (1)


Попробуй это:

ff=subprocess.Popen("plink root@server -pw pass rpm -qa",shell=False,stdin=subprocess.PIPE) 
ff.communicate("grep string > rpm.txt")

A

person amadain    schedule 04.09.2013