agent/taskengine/host/processor_linux.go (49 lines of code) (raw):

package host import ( "fmt" "os" "os/user" "github.com/aliyun/aliyun_assist_client/agent/taskengine/taskerrors" "github.com/aliyun/aliyun_assist_client/agent/util/process" "github.com/aliyun/aliyun_assist_client/thirdparty/sirupsen/logrus" "github.com/aliyun/aliyun_assist_client/agent/log" ) func (p *HostProcessor) checkCredentials() (bool, error) { if _, _, _, err := process.GetUserCredentials(p.Username); err != nil { return false, taskerrors.NewInvalidUsernameOrPasswordError(err, fmt.Sprintf("UserInvalid_%s", p.Username)) } return true, nil } func (p *HostProcessor) checkHomeDirectory() (string, error) { taskLogger := log.GetLogger().WithFields(logrus.Fields{ "TaskId": p.TaskId, "Phase": "HostProcessor-PreChecking", "Step": "detectHomeDirectory", }) if p.Username != "" { specifiedUser, err := user.Lookup(p.Username) if err != nil { return "", taskerrors.NewHomeDirectoryNotAvailableError(err) } taskLogger.WithFields(logrus.Fields{ "homeDirectory": specifiedUser.HomeDir, }).Infoln("Home directory of specified user is available") return specifiedUser.HomeDir, nil } else { var err error userHomeDir, err := os.UserHomeDir() if err == nil { taskLogger.WithFields(logrus.Fields{ "HOME": userHomeDir, }).Infof("Detected HOME environment variable") return userHomeDir, nil } currentUser, err := user.Current() if err == nil { taskLogger.Infof("Detected home directory of current user %s running agent: %s", currentUser.Username, currentUser.HomeDir) return currentUser.HomeDir, nil } taskLogger.WithError(err).Errorln("Failed to obtain home directory of current user running agent") return "", nil } }