Tshark 将输出重定向到 C# 控制台程序或文件

Tshark redirect output to C# console program or to file

我正在尝试使用 Tshark 命令行应用程序捕获 CDP 数据包,并将输出重定向到我的 C# 控制台程序或一个文件,然后我可以将其读入我的应用程序。这是行不通的。我是运行宁Windows10版本1703.

我已经在命令行提示符中验证了特定的 tshark 命令有效,并且我得到了 CDP 数据包的正确输出,但是当我尝试在命令行提示符中重定向输出时,一个文件被写入,但没有数据被写入。这个问题也发生在我的 C# 控制台应用程序中,无论我是否将输出重定向到我的控制台或文件,它都会发生。我在某处(不记得在哪里)读到 tshark 可能有重定向输出的问题,你知道这是不是真的?我还尝试通过使用 tshark -W "filename.txt" 命令编写文件来重定向输出(与 .pcap 的结果相同)。这也失败了。

// Nic.Name = Ethernet (the network card I am capturing packet from)

// In the code below I am trying to redirect the output from the tshark command to my console application.

                    ProcessStartInfo psi = new ProcessStartInfo();
                        psi.FileName = @"C:\tshark\tshark.exe";
                        psi.Arguments = "-i " + nic.Name + " 
                        ether[16:4] = 0x0300000C and ether[20:2] == 0x2000";
                        psi.UseShellExecute = false;
                        psi.RedirectStandardOutput = true;
                        psi.CreateNoWindow = true;
                        Process tsharkProcess = Process.Start(psi);
                        string s = tsharkProcess.StandardOutput.ReadToEnd();
                        Console.WriteLine(s);

我希望输出是这样的(命令行 window 不应在 运行 宁 tshark 命令时出现,这应该 运行 在后台):

正在 'Ethernet' 拍摄 1 0.000000 d0:c7:89:1c:55:19 → 01:00:0c:cc:cc:cc CDP 492 设备 ID:SW1.local.it 端口 ID:GigabitEthernet1/0/25

我得到以下输出:

正在 'Ethernet'

拍摄

我没有收到任何错误消息。

我找到问题了。我缺少 tshark 写入文件所依赖的 .dll.exe 文件。现在可以写入文件,但我没有重定向到控制台。