public async Task ExecuteMacScan() { var snmpTargets = await SnmpTargets.Query().ToListAsync(); foreach (var snmpTarget in snmpTargets) { var avaliable = false; try { var results = MapMacAddresses(snmpTarget); await SnmpResultService.ProcessMacScanResults(results); avaliable = true; } catch (Exception) { // TODO: Logging } if (snmpTarget.Reachable != avaliable) { await SetReachability(avaliable, snmpTarget.IpAddress); } } }
public async Task ExecuteTrafficScan() { var snmpTargets = await SnmpTargets.Query().ToListAsync(); foreach (var snmpTarget in snmpTargets) { var avaliable = false; try { var results = ProcessTargetsTraffic(snmpTarget, SnmpOids.IfHcInOctets, string.IsNullOrEmpty(snmpTarget.Community) ? "public" : snmpTarget.Community); avaliable = true; await SnmpResultService.ProcessTrafficResults(results); results = ProcessTargetsTraffic(snmpTarget, SnmpOids.IfHcOutOctets, string.IsNullOrEmpty(snmpTarget.Community) ? "public" : snmpTarget.Community); await SnmpResultService.ProcessTrafficResults(results); } catch (Exception) { // TODO: Logging } if (snmpTarget.Reachable != avaliable) { await SetReachability(avaliable, snmpTarget.IpAddress); } } }
public async Task <List <PortStatistics> > GetPortStatisticsForSwitch(string ipAddress) { var snmpTarget = await SnmpTargets.Query() .FirstOrDefaultAsync(target => target.IpAddress == ipAddress); if (snmpTarget == null) { throw new ArgumentException("ipAddress"); } var monitoredPorts = await MonitoredPorts.Query() .Where(port => port.SnmpIpAddress == ipAddress) .Where(port => !port.ExcludeFromStatistics) .ToListAsync(); var results = new List <PortStatistics>(); foreach (var monitoredPort in monitoredPorts) { var result = new PortStatistics { InboundTraffic = monitoredPort.AllInOctets, MonitoredPort = monitoredPort, OutboundTraffic = monitoredPort.AllOutOctets, SnmpTarget = snmpTarget }; results.Add(result); } return(results); }
private async Task SetReachability(bool reachable, string snmpTargetIp) { var target = await SnmpTargets.Query() .FirstOrDefaultAsync(snmp => snmp.IpAddress == snmpTargetIp); if (target != null) { target.Reachable = reachable; SnmpTargets.Update(target); await Context.SaveAsync(); } }
public async Task <SnmpTarget> GetSnmpTarget(string ipAddress) { var snmpTarget = await SnmpTargets.Query() .FirstOrDefaultAsync(target => target.IpAddress == ipAddress); if (snmpTarget == null) { throw new ArgumentException("ipAddress"); } return(snmpTarget); }
public async Task <List <SwitchStatistics> > GetSwitchStatistics() { var snmpTargets = await SnmpTargets.Query() .Include(_ => _.Group) .ToListAsync(); var results = new List <SwitchStatistics>(); foreach (var snmpTarget in snmpTargets) { var target = snmpTarget; try { var inboundTraffic = await MonitoredPorts.Query() .Where(port => port.SnmpIpAddress == target.IpAddress) .Where(port => !port.ExcludeFromStatistics) .SumAsync(port => port.AllInOctets); var outboundTraffic = await MonitoredPorts.Query() .Where(port => port.SnmpIpAddress == target.IpAddress) .Where(port => !port.ExcludeFromStatistics) .SumAsync(port => port.AllOutOctets); results.Add(new SwitchStatistics { InboundTraffic = inboundTraffic, OutboundTraffic = outboundTraffic, SnmpTarget = target, Reachable = target.Reachable, GroupName = target.Group.Name }); } catch (Exception) { // TODO: Logging } } return(results); }