diff --git a/changes/4711-fleetctl-preview-cleanup-osquery-socket b/changes/4711-fleetctl-preview-cleanup-osquery-socket new file mode 100644 index 0000000000..546984ae89 --- /dev/null +++ b/changes/4711-fleetctl-preview-cleanup-osquery-socket @@ -0,0 +1 @@ +* Fleetctl preview to clean up osquery socket files before running fleet-osquery. diff --git a/cmd/fleetctl/preview.go b/cmd/fleetctl/preview.go index 1da907a141..be119e9311 100644 --- a/cmd/fleetctl/preview.go +++ b/cmd/fleetctl/preview.go @@ -629,6 +629,9 @@ func downloadOrbitAndStart(destDir, enrollSecret, address, orbitChannel, osquery if err := os.RemoveAll(path.Join(destDir, "orbit.db")); err != nil { fmt.Println("Warning: clearing orbit db dir:", err) } + if err := cleanUpSocketFiles(destDir); err != nil { + fmt.Println("Warning: cleaning up socket files:", err) + } updateOpt := update.DefaultOptions @@ -673,6 +676,26 @@ func downloadOrbitAndStart(destDir, enrollSecret, address, orbitChannel, osquery return nil } +// cleanUpSocketFiles cleans up fleet-osqueryd's socket file +// ("orbit-osquery.em") and osquery extension socket files +// ("orbit-osquery.em.*"). +func cleanUpSocketFiles(path string) error { + entries, err := os.ReadDir(path) + if err != nil { + return fmt.Errorf("read dir: %w", err) + } + for _, entry := range entries { + if !strings.HasPrefix(entry.Name(), "orbit-osquery.em") { + continue + } + entryPath := filepath.Join(path, entry.Name()) + if err := os.Remove(entryPath); err != nil { + return fmt.Errorf("remove %q: %w", entryPath, err) + } + } + return nil +} + func stopOrbit(destDir string) error { err := killFromPIDFile(destDir, "osquery.pid", "osqueryd") if err != nil {