change: create temp file when modifing password over SSH

This commit is contained in:
Andrew Woodlee 2025-03-11 14:55:02 -05:00
parent 5d21764ef1
commit 1a48c7bca5
2 changed files with 22 additions and 2 deletions

View File

@ -0,0 +1,3 @@
kind: Changed
body: 'UserCommands: create temp file when modifing password over SSH'
time: 2025-03-11T14:54:10.720370135-05:00

View File

@ -15,6 +15,7 @@ import (
"strings"
"time"
"github.com/google/uuid"
"github.com/kevinburke/ssh_config"
"github.com/pkg/errors"
"github.com/pkg/sftp"
@ -509,9 +510,25 @@ func (command *Command) RunCmdSSH(cmdCtxLogger zerolog.Logger, opts *ConfigOpts)
if command.Type == UserCT && command.UserOperation == "password" {
// cmdCtxLogger.Debug().Msgf("adding stdin")
userNamePass := fmt.Sprintf("%s:%s", command.Username, command.UserPassword)
ArgsStr = fmt.Sprintf("echo %s | chpasswd", userNamePass)
userNamePass := fmt.Sprintf("%s:%s", command.Username, command.UserPassword)
client, err := sftp.NewClient(command.RemoteHost.SshClient)
if err != nil {
return collectOutput(&cmdOutBuf, command.Name, cmdCtxLogger, command.OutputToLog), fmt.Errorf("error creating sftp client: %v", err)
}
uuidFile := uuid.New()
passFilePath := fmt.Sprintf("/tmp/%s", uuidFile.String())
passFile, passFileErr := client.Create(passFilePath)
if passFileErr != nil {
return collectOutput(&cmdOutBuf, command.Name, cmdCtxLogger, command.OutputToLog), fmt.Errorf("error creating file /tmp/%s: %v", uuidFile.String(), passFileErr)
}
passFile.Write([]byte(userNamePass))
ArgsStr = fmt.Sprintf("cat %s | chpasswd", passFilePath)
defer passFile.Close()
defer client.Remove(passFilePath)
// commandSession.Stdin = command.stdin
}
if err := commandSession.Run(ArgsStr); err != nil {