То, что вы написали, не выводит данные в destfile
.Что он делает:
cat mypipe
: выводит содержимое файла с именем mypipe
в его стандартный вывод. |
: принимает стандартный вывод из cat mypipe
иотправляет его как stdin на ssh
. ssh second_com@IP_address
: создает ssh
соединение с другой системой и запускает указанную команду, переадресовывая свой стандартный stdin. 'cat destfile'
: Запускает команду cat destfile
в этой другой системе, которая игнорирует перенаправленный стандартный ввод и выводит содержимое файла с именем destfile
в стандартный вывод, что ни к чему не приводит.
Что вы, вероятно,Имеется что-то вроде этого:
cat mypipe | ssh second_com@IP_address 'cat >destfile'
Разница:
'cat destfile'
: запускает команду cat >destfile
в этой другой системе, поэтому cat
просто копируетперенаправленный ввод в стандартный вывод, а затем >destfile
заставляет этот вывод быть сохраненным в локальном файле destfile
.
Таким образом, результат в точности соответствует описанному вами.
Самый очевидный способ изменить это, просто поставить вашу программу на Python на местоcat
.Конечно, вам нужно поместить свою программу на удаленный компьютер, где-нибудь доступный, например, в домашний каталог этого пользователя second_com
.Затем вы можете выполнить его следующим образом:
cat mypipe | ssh second_com@IP_address 'python myscript.py'
Теперь внутри myscript.py
он может читать из sys.stdin
, который будет потоком данных, поступающих с cat mypipe
(через |
и ssh
), и вы можете делать с этими данными все, что хотите, без необходимости сначала сохранять их в destfile
.