diff --git a/.env.example b/.env.example index 872c34b..10894f1 100644 --- a/.env.example +++ b/.env.example @@ -4,3 +4,4 @@ STORE_BACKEND=memory RUN_MIGRATIONS=true SNMP_ENABLED=true SNMP_COMMUNITY=public +# NETTOPO_LOG_PING_FAILURES=true # логировать каждый неответивший ping (по умолчанию выключено — иначе засоряет journal) diff --git a/internal/scans/runner.go b/internal/scans/runner.go index d17d122..dc3c20e 100644 --- a/internal/scans/runner.go +++ b/internal/scans/runner.go @@ -5,10 +5,11 @@ import ( "log" "net" "net/netip" + "os" "os/exec" "runtime" - "strings" "strconv" + "strings" "sync" "time" @@ -336,7 +337,11 @@ func probeHost(ip string, timeoutMS int) bool { cmd = exec.Command("ping", "-c", "1", "-W", timeoutSec, ip) } if err := cmd.Run(); err != nil { - log.Printf("probe failed for %s: %v", ip, err) + // На Linux/macOS ping с -c 1 даёт exit 1 при отсутствии ответа — это ожидаемо для большинства + // адресов в CIDR, не ошибка приложения. Логировать каждый такой случай бессмысленно засоряет journal. + if os.Getenv("NETTOPO_LOG_PING_FAILURES") == "true" { + log.Printf("ping: нет ответа от %s: %v", ip, err) + } return false } return true