bug
In my system the "collect" command always gives error failed to find MAC address with IP
version
commit fcfe76295e4759abcf4596f7c2d7eacb9244c253 (HEAD -> main, tag: v0.2.1, origin/main, origin/HEAD)
Merge: 2fca8f9 cc6ab50
To Reproduce
Steps to reproduce the behavior:
- ./magellan scan --subnet 192.168.10.0 --subnet-mask 255.255.255.0 --cache data/assets.db
- ./magellan list --cache data/assets.db
- ./magellan collect --cache data/assets.db --timeout 5 --username root --password 0penBmc --output logs
And I see these errors
{"level":"warn","error":"no ethernet interfaces found with IP address","time":"2025-04-25T16:32:21+02:00","message":"failed to find MAC address with IP 'https://192.168.10.46'"}
{"level":"warn","error":"no ethernet interfaces found with IP address","time":"2025-04-25T16:32:21+02:00","message":"failed to find MAC address with IP 'https://192.168.10.91'"}
{"level":"warn","error":"no ethernet interfaces found with IP address","time":"2025-04-25T16:32:23+02:00","message":"failed to find MAC address with IP 'https://192.168.10.82'"}
{"level":"warn","error":"no ethernet interfaces found with IP address","time":"2025-04-25T16:32:23+02:00","message":"failed to find MAC address with IP 'https://192.168.10.85'"}
See the complete traces in the file below (traces.error.txt)
and
$ sqlite3
SQLite version 3.26.0 2018-12-01 12:34:55
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> attach "/playground/magellan/data/assets.db" as db1;
sqlite> .tables
db1.magellan_scanned_assets
sqlite> SELECT * FROM db1.magellan_scanned_assets;
https://192.168.10.86|443|tcp|1|2025-04-25 16:31:34.732021656+02:00
https://192.168.10.91|443|tcp|1|2025-04-25 16:31:34.732903915+02:00
https://192.168.10.46|443|tcp|1|2025-04-25 16:31:34.733949108+02:00
https://192.168.10.82|443|tcp|1|2025-04-25 16:31:34.731715066+02:00
https://192.168.10.85|443|tcp|1|2025-04-25 16:31:34.731943185+02:00
https://192.168.10.25|443|tcp|1|2025-04-25 16:31:34.732430844+02:00
sqlite>
Fix
The problem is that the IP is stored with the HTTPS prefix, https://192.168.10.85 , but the function expects only the IP, 192.168.10.85.
This patch fixes the error:
$ git diff pkg/collect.go
diff --git a/pkg/collect.go b/pkg/collect.go
index 69fe951..862ea3c 100644
--- a/pkg/collect.go
+++ b/pkg/collect.go
@@ -167,7 +167,14 @@ func CollectInventory(assets *[]RemoteAsset, params *CollectParams) ([]map[strin
// optionally, add the MACAddr property if we find a matching IP
// from the correct ethernet interface
- mac, err := FindMACAddressWithIP(config, net.ParseIP(sr.Host))
+ host := sr.Host
+ sub_str := "https://"
+ if strings.Contains(host, sub_str) {
+ host = strings.TrimPrefix(sr.Host,sub_str)
+ }
+
+ mac, err := FindMACAddressWithIP(config, net.ParseIP(host))
+ // mac, err := FindMACAddressWithIP(config, net.ParseIP(sr.Host))
if err != nil {
log.Warn().Err(err).Msgf("failed to find MAC address with IP '%s'", sr.Host)
}
(END)
See the complete traces in the file below (traces.fix.txt)
bug
In my system the "collect" command always gives error failed to find MAC address with IP
version
To Reproduce
Steps to reproduce the behavior:
And I see these errors
See the complete traces in the file below (traces.error.txt)
and
Fix
The problem is that the IP is stored with the HTTPS prefix,
https://192.168.10.85, but the function expects only the IP,192.168.10.85.This patch fixes the error:
See the complete traces in the file below (traces.fix.txt)