private void SNMPWalkByIP(ISNMPDeviceSettingDTO SNMPSettingEntry) { IList <IPAddress> IPinventory; OctetString Community; //Compute full list of devices that have responded to ARP request IPinventory = ModelHelper.GenerateHostList(SNMPSettingEntry.InitialIP, SNMPSettingEntry.FinalIP, SNMPSettingEntry.NetworkMask, ARPTable.Values.ToList()); Community = new OctetString(SNMPSettingEntry.CommunityString); foreach (IPAddress target in IPinventory) { ISNMPDeviceDataDTO device = BuildSNMPDevice(target, SNMPSettingEntry.NetworkMask); try { SNMPWalkByOIDSetting(Community, SNMPSettingEntry, device); } catch (SnmpException e) { NotifyError(e); //Device entry not containing full info for processing DeviceData.Remove(target.ToString()); continue; } } }
private void DeleteDevice() { bool wrongInput = true, confirmdeletion = false; string skey = null, deletioncmd = null; ISNMPDeviceSettingDTO sresult = null; //Ask for key do { Console.Write("Insert device definition name: "); skey = Console.ReadLine(); wrongInput = string.IsNullOrWhiteSpace(skey); if (wrongInput) { Console.WriteLine("Insert non-empty value."); } }while (wrongInput); wrongInput = true; Console.WriteLine(); //Pull existing data and editing sresult = _controller.GetSNMPDeviceSetting(skey).FirstOrDefault(); ShowData(sresult); if (sresult != null) { //Ask for confirmation do { Console.Write("WARNING: Delete DeviceSetting implies wiping relationships with processing settings. Continue with deletion of this device setting? [Y/N] "); deletioncmd = Console.ReadLine().ToUpper(); wrongInput = string.IsNullOrWhiteSpace(skey) || !(deletioncmd == "Y" || deletioncmd == "N"); if (wrongInput) { Console.WriteLine("Insert valid value."); } else { confirmdeletion = deletioncmd == "Y"; } }while (wrongInput); //Delete command if (confirmdeletion) { _controller.DeleteDevice(skey); } } else { Console.WriteLine("Device Setting not found.\n"); } NextActionHandle(); }
private void EditDeviceSetting() { bool wrongInput = true; string skey = null; ISNMPDeviceSettingDTO sresult = null; string settingname, initialIPAndMask, finalIPAndMask, SNMPuser; //Ask for key do { Console.Write("Insert device definition name: "); skey = Console.ReadLine(); wrongInput = string.IsNullOrWhiteSpace(skey); if (wrongInput) { Console.WriteLine("Insert non-empty value."); } }while (wrongInput); Console.WriteLine(); //Pull existing data and editing sresult = _controller.GetSNMPDeviceSetting(skey).FirstOrDefault(); ShowData(sresult); if (sresult != null) { //Redefine values Console.WriteLine("Insert values to be editted. Insert null-values for keeping previous ones."); Console.Write("Device definition name: "); settingname = Console.ReadLine(); settingname = string.IsNullOrWhiteSpace(settingname) ? sresult.ID : settingname; Console.Write("Initial IP/mask: "); initialIPAndMask = Console.ReadLine(); initialIPAndMask = string.IsNullOrWhiteSpace(initialIPAndMask) ? $"{sresult.InitialIP}/{sresult.NetworkMask}" : initialIPAndMask; Console.Write("Final IP/mask: "); finalIPAndMask = Console.ReadLine(); finalIPAndMask = string.IsNullOrWhiteSpace(finalIPAndMask) ? $"{sresult.FinalIP}/{sresult.NetworkMask}" : finalIPAndMask; Console.Write("SNMP community user (V2): "); SNMPuser = Console.ReadLine(); SNMPuser = string.IsNullOrWhiteSpace(SNMPuser) ? sresult.CommunityString : SNMPuser; Console.WriteLine(); _controller.EditDevice(settingname, sresult.ID, initialIPAndMask, finalIPAndMask, SNMPuser); } else { Console.WriteLine("Device Setting not found.\n"); } NextActionHandle(); }
private void ShowData(ISNMPDeviceSettingDTO data) { if (data != null) { ViewHelper.RedirectConsoleToFile(true); Console.WriteLine($"SNMP setting \"{data.ID}\" with this definition:\n" + $"\t-Initial IP: {data.InitialIP}/{data.NetworkMask}\n" + $"\t-Final IP: {data.FinalIP}/{data.NetworkMask}\n" + $"\t-Community string: {data.CommunityString}\n"); ViewHelper.RedirectConsoleToFile(false); } }
public IList <ISNMPDeviceSettingDTO> GetSNMPDeviceSetting(string key = null) { if (string.IsNullOrWhiteSpace(key)) { return(Model.DeviceSettings.Values.ToList()); } else { ISNMPDeviceSettingDTO res = null; Model.DeviceSettings.TryGetValue(key, out res); return(res == null ? new List <ISNMPDeviceSettingDTO>() : new List <ISNMPDeviceSettingDTO>(new[] { res })); } }
private void SNMPWalkByOIDSetting(OctetString Community, ISNMPDeviceSettingDTO SNMPSettingEntry, ISNMPDeviceDataDTO SNMPDeviceData) { //Get all OID requested for all processing algorithms IEnumerable <IOIDSettingDTO> OIDSettingCollection = Processes.Values.SelectMany(x => x.OIDSettings.Values); foreach (IOIDSettingDTO OIDSetting in OIDSettingCollection) { try { SNMPRunAgent(Community, OIDSetting, SNMPDeviceData); } catch //(SnmpException e) { throw; } } }
public ISNMPProcessStrategy BuildProcess(string SettingID, EnumProcessingType ProcessType) { ISNMPProcessStrategy ProcessProfile = null; ISNMPDeviceSettingDTO DeviceProfile = DeviceSettings?[SettingID]; switch (ProcessType) { case EnumProcessingType.None: break; case EnumProcessingType.TopologyDiscovery: //Get existing strategy if (!Processes.ContainsKey(ProcessType)) { ProcessProfile = new TopologyBuilderStrategy(this, ChangeTrackerHandler); Processes.Add(ProcessType, ProcessProfile); } else { ProcessProfile = Processes[ProcessType]; } //Add device setting if found if (DeviceProfile != null) { ProcessProfile.TargetDeviceSettings.Add(DeviceProfile); } ChangeTrackerHandler(ProcessProfile, typeof(ISNMPProcessStrategy)); break; case EnumProcessingType.PrinterConsumption: break; default: break; } return(ProcessProfile); }