在日常操作中,我经常需要在远程服务器上执行tcpdump,将输出保存到文件中,然后将该文件移动到我的笔记本上在wireshark上进行分析是很痛苦的。
我正在研究下面的命令,它在linux中运行良好。
ssh sudo tcpdump -vv -i eth0 -U -w - | wireshark -k -i -但不幸的是,我的公司提供的我的工作笔记本电脑上有窗户,他们不允许我更换另一个操作系统。考虑到这个限制,我试图达到同样的结果,但在窗口.
如果在powershell中的windows中执行以下命令
ssh sudo tcpdump -vv -i eth0 -U -w - | 'C:\Program Files\Wireshark\Wireshark.exe' -k -i -我知道这个错误
At line:1 char:87
+ ... -i eth0 -U -w - | 'C:\Program Files\Wireshark\Wireshark.exe' -k -i -
+ ~~
Unexpected token '-k' in expression or statement.
At line:1 char:44
+ ... -i eth0 -U -w - | 'C:\Program Files\Wireshark\Wireshark.exe' -k -i -
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expressions are only allowed as the first element of a pipeline.
At line:1 char:90
+ ... -i eth0 -U -w - | 'C:\Program Files\Wireshark\Wireshark.exe' -k -i -
+ ~~
Unexpected token '-i' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken如果我在不使用ssh部件的情况下执行wireshark命令,我会得到相同的错误,但是如果我像这样执行它
& '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,wireshark从未启动。我做错了什么?为什么与linux中最相似的管道命令在windows中不工作,管道是不同的?
发布于 2022-03-15 17:46:17
正如@Jasen在注释中所提到的,我尝试使用该命令时没有使用PowerShell,而是在Windows 10上使用Git。
#!/bin/bash
server=
iface="ens6"
ssh $server "tcpdump -s 0 -U -n -w - -i $iface not port 22" | wireshark -k -i -此脚本假定您的Windows计算机上安装了GitBash和wireshark,以及通过公钥身份验证进行通信的服务器和主机。确保在使用tcpdump时拥有根权限。端口22被显式忽略,因此在数据包嗅探会话期间看不到ssh通信量。
https://serverfault.com/questions/1067059
复制相似问题