我正在创建一个应用程序,它使用 SNMPWalk 来获取特定 IP 地址的详细信息。现在它意味着使用 Nmap 查找指定网络中的所有打印机,然后使用 SNMPWalk 获取每台打印机的详细信息。
问题是 SNMPWalk 给了我错误:
"No log handling enabled - using stderr logging
-v2c: (Sub-id not found: (top) -> -v2c)"
我的代码在这里:
Process p = new Process();
p.StartInfo.FileName = snmploc + "\\snmpwalk.exe";
p.StartInfo.ErrorDialog = false;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = false;
p.StartInfo.WorkingDirectory = snmploc;
p.StartInfo.Arguments = "–mALL -v2c –cpublic " + printer.IP();
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.Start();
Console.WriteLine("Snmpwalk has been fired");
Console.WriteLine("Waiting for Snmp to terminate...");
string output = p.StandardOutput.ReadToEnd();
string error = p.StandardError.ReadToEnd();
p.WaitForExit();
Console.WriteLine(p.ExitCode);
printer
是类的一个对象Printer
。它用于包含打印机详细信息,例如 IP 地址、名称、型号、序列号和打开的端口。snmploc
从命令行参数获得。
这如此复杂的主要原因是,当我尝试在命令提示符中使用完全相同的命令时,它可以完美运行。