Захват вывода команды Linux (сетевой трафик) из c # без записи в файл - PullRequest
0 голосов
/ 29 сентября 2018

На моей машине с Ubuntu меня интересует захват трафика через порт 20001. Для захвата трафика через этот порт я делаю:

  1. Установите tcpdump apt-get install tcpdump

  2. Run: tcpdump -i eth0 port 20001 (имя моего сетевого интерфейса eth0)

  3. Это выводит:

00: 49:36.157448 IP debian.20001> 192.168.1.3.5868: UDP, длина 652

00: 49: 36.159375 IP 192.168.1.3.5868> debian.20001: UDP, длина 681

00:53: 58.614081 IP 192.168.1.3.5868> debian.20001: UDP, длина 674

00: 53: 58.621773 IP debian.20001> 192.168.1.3.5868: UDP, длина 626

... и т. Д.


Теперь я хотел бы получить эти же данные из c # (моно), и вот что я пробовал:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("started!");

        var proc = new Process
        {
            StartInfo = new ProcessStartInfo
            {
                FileName = "tcpdump",
                Arguments = "-i eth0 port 20001", // note eth0 is the name of my network interface
                UseShellExecute = false,
                RedirectStandardOutput = true,
                CreateNoWindow = true
            }
        };

        proc.Start();
        while (!proc.StandardOutput.EndOfStream)
        {
            string line = proc.StandardOutput.ReadLine();
            Console.WriteLine(line);
        }
    }
}

Когда я запускаюэта программа ничего не захватывает. Как я могу получить результат tcpdump -i eth0 port 20001 из моего приложения mono c #? Я знаю, что могу записать его в файл, но файл станет слишком большим, и я хочу избежать этого.Или, может быть, записать его в файл и продолжить его удаление?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...