go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/packages/aix_packages.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package packages 5 6 import ( 7 "bufio" 8 "fmt" 9 "go.mondoo.com/cnquery/providers/os/connection/shared" 10 "io" 11 "strings" 12 ) 13 14 const ( 15 AixPkgFormat = "bff" 16 ) 17 18 func parseAixPackages(r io.Reader) ([]Package, error) { 19 pkgs := []Package{} 20 21 scanner := bufio.NewScanner(r) 22 i := 0 23 for scanner.Scan() { 24 line := scanner.Text() 25 i++ 26 27 if i == 1 { 28 continue 29 } 30 31 record := strings.Split(line, ":") 32 33 // Fileset, Level, PtfID, State, Type, Description, EFIXLocked 34 pkgs = append(pkgs, Package{ 35 Name: record[1], 36 Version: record[2], 37 Description: strings.TrimSpace(record[6]), 38 Format: AixPkgFormat, 39 }) 40 41 } 42 return pkgs, nil 43 } 44 45 type AixPkgManager struct { 46 conn shared.Connection 47 } 48 49 func (f *AixPkgManager) Name() string { 50 return "AIX Package Manager" 51 } 52 53 func (f *AixPkgManager) Format() string { 54 return AixPkgFormat 55 } 56 57 func (f *AixPkgManager) List() ([]Package, error) { 58 cmd, err := f.conn.RunCommand("lslpp -cl ") 59 if err != nil { 60 return nil, fmt.Errorf("could not read freebsd package list") 61 } 62 63 return parseAixPackages(cmd.Stdout) 64 } 65 66 func (f *AixPkgManager) Available() (map[string]PackageUpdate, error) { 67 return map[string]PackageUpdate{}, nil 68 }