With question

Example where CLI asks new password interactively:

package main

import (
    "context"
    "time"

    "go.uber.org/zap"

    "github.com/annetutil/gnetcli/pkg/cmd"
    "github.com/annetutil/gnetcli/pkg/credentials"
    "github.com/annetutil/gnetcli/pkg/device/huawei"
    "github.com/annetutil/gnetcli/pkg/streamer/ssh"
)

func main() {
    host := "somehost"
    changeUser := "target_login"
    newPass := "newpassword"
    logConfig := zap.NewDevelopmentConfig()
    logger := zap.Must(logConfig.Build())

    creds := credentials.NewSimpleCredentials(
        credentials.WithUsername(credentials.GetLogin()),
        credentials.WithPassword(credentials.Secret("mypassword")),
        credentials.WithSSHAgentSocket(credentials.GetDefaultAgentSocket()),
        credentials.WithLogger(logger),
    )

    ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
    defer cancel()

    connector := ssh.NewStreamer(host, creds, ssh.WithLogger(logger))
    dev := huawei.NewDevice(connector)
    err := dev.Connect(ctx)
    if err != nil {
        logger.Fatal("connect error", zap.Error(err))
    }

    _, err = dev.Execute(cmd.NewCmd("system-view"))
    if err != nil {
        logger.Fatal("system-view error", zap.Error(err))
    }
    _, _ = dev.Execute(cmd.NewCmd("aaa"))
    _, _ = dev.Execute(cmd.NewCmd("local-user "+changeUser+" password",
        cmd.WithAnswers(
            cmd.NewAnswer("Enter Password:", newPass),
            cmd.NewAnswer("Confirm Password:", newPass),
        ),
    ))
    _, _ = dev.Execute(cmd.NewCmd("commit"))
}