Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ExecCmd = &cobra.Command{ Use: "exec [flags] [USER@]SERVER [--] COMMAND...", Short: "Execute a command on a remote server", Long: `Execute a command on a remote server. This command executes a specified command on a remote server and returns the output. It supports SSH-like syntax for specifying the user and server. Use -- to separate alpacon flags from the remote command, ensuring that flags intended for the remote command (e.g., -U, -d) are not interpreted as alpacon flags. All flags must be placed before the server name. Flags: -u, --username [USER_NAME] Specify the username for command execution. -g, --groupname [GROUP_NAME] Specify the group name for command execution.`, Example: ` # Simple command execution alpacon exec prod-docker docker ps alpacon exec root@prod-docker docker ps # Use -- to pass flags to the remote command alpacon exec root@db-server -- docker exec postgres psql -U myproject -d myproject alpacon exec my-server -- grep -r "pattern" /var/log # Specify user and group with flags alpacon exec -u root prod-docker systemctl status nginx alpacon exec -g docker user@server docker images`, DisableFlagParsing: true, Run: func(cmd *cobra.Command, args []string) { parsed := ParseRemoteExecArgs(args) if parsed.ShowHelp { _ = cmd.Help() return } if parsed.Err != "" { utils.CliErrorWithExit("%s", parsed.Err) return } if parsed.Server == "" { _ = cmd.Help() utils.CliErrorWithExit("server name is required.") return } if parsed.Command == "" { utils.CliErrorWithExit("You must specify a command to execute.") return } alpaconClient, err := client.NewAlpaconAPIClient() if err != nil { utils.CliErrorWithExit("Connection to Alpacon API failed: %s. Consider re-logging.", err) return } env := make(map[string]string) result, err := RunCommandWithRetry(alpaconClient, parsed.Server, parsed.Command, parsed.Username, parsed.Groupname, env) if err != nil { utils.CliErrorWithExit("%s", err) return } fmt.Println(result) }, }
Functions ¶
func RunCommandWithRetry ¶ added in v1.3.2
func RunCommandWithRetry(ac *client.AlpaconClient, serverName, command, username, groupname string, env map[string]string) (string, error)
RunCommandWithRetry executes a remote command with MFA and username-required error handling and retry logic. Used by both exec and websh commands.
Types ¶
type RemoteExecArgs ¶ added in v1.3.2
type RemoteExecArgs struct {
Username string
Groupname string
Server string
Command string
ShowHelp bool
Err string
}
RemoteExecArgs holds parsed arguments for remote command execution.
func ParseRemoteExecArgs ¶ added in v1.3.2
func ParseRemoteExecArgs(args []string) RemoteExecArgs
ParseRemoteExecArgs parses raw CLI arguments with manual flag handling. It recognizes -u/--username, -g/--groupname, and -h/--help flags before the server name.
The -- separator has two roles depending on position:
- After the server name: acts as a command separator. Everything after it is the remote command, with no further flag parsing.
- Before the server name (e.g., after flags): acts as an end-of-flags marker. The first arg after -- becomes the server, the rest is the command.
Without --, everything after the server name is the remote command.
Layout: [flags] [USER@]SERVER [--] COMMAND...
Click to show internal directories.
Click to hide internal directories.