В моих повседневных операциях мне часто приходится запускать tcpdump на удаленных серверах, и очень сложно сохранить вывод в файл, а затем перенести файл на свой ноутбук, чтобы проанализировать его на wireshark.
Я изучал приведенную ниже команду, и она отлично работает в Linux.
ssh <удаленный_хост> sudo tcpdump -vv -i eth0 -U -w - | проводная акула -k -i -
Но, к сожалению, мой рабочий ноутбук, предоставленный моей компанией, имеет Windows, и они не позволяют мне перейти на другую ОС. Учитывая это ограничение, я пытался добиться того же результата, но в окнах...
Если я выполню следующую команду в Windows в PowerShell
ssh <удаленный_хост> sudo tcpdump -vv -i eth0 -U -w - | 'C:\Program Files\Wireshark\Wireshark.exe' -k -i -
я получаю эту ошибку
В строке:1 символ:87
+ ... -i eth0 -U -w - | 'C:\Program Files\Wireshark\Wireshark.exe' -k -i -
+ ~~
Неожиданный токен '-k' в выражении или операторе.
В строке:1 символ:44
+ ... -i eth0 -U -w - | 'C:\Program Files\Wireshark\Wireshark.exe' -k -i -
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Выражения разрешены только в качестве первого элемента конвейера.
В строке:1 символ:90
+ ... -i eth0 -U -w - | 'C:\Program Files\Wireshark\Wireshark.exe' -k -i -
+ ~~
Неожиданный токен '-i' в выражении или операторе.
+ Информация о категории: ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId: UnexpectedToken
Если я выполняю команду wireshark без части ssh, я получаю ту же ошибку, но если я выполняю ее так
& 'C:\Program Files\Wireshark\Wireshark.exe' -k -i -
Он открывает wireshark и ждет ввода данных. Имея это в виду, я попытался изменить команду на
ssh <удаленный_хост> sudo tcpdump -vv -i eth0 -U -w - | & 'C:\Program Files\Wireshark\Wireshark.exe' -k -i -
Таким образом, команда ssh выполняется, и tcpdump запускается на удаленном хосте, а wirehark никогда не запускается. Что я делаю не так? Почему конвейерная команда, которая больше всего похожа на команду в Linux, не работает в Windows, отличается ли конвейерная обработка?