我正在创建一个使用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
是从命令行参数获得的。
这是如此复杂的主要原因是,当我尝试在命令提示符中使用完全相同的命令时,它可以很好地工作。