diff options
Diffstat (limited to '')
-rw-r--r-- | README | 203 |
1 files changed, 190 insertions, 13 deletions
@@ -2,20 +2,25 @@ NAME sshexec - run a command through ssh(1) with normal command syntax SYNOPSIS - sshexec [{ [ssh=ssh-command] [dir=directory] }] [ssh-option] ... - destination command [argument] ... + sshexec [{ [ssh=ssh-command] [dir=directory] [cd=(strict|lax)] + [[fd]{>,>>,>|,<,<>}[&]=file] [asis=asis-marker + [nasis=asis-count]] }] [ssh-option] ... destination + command [argument] ... DESCRIPTION The sshexec utility is a wrapper for SSH that makes it easy to run commands directly in the SSH command. sshexec passes any argument after } to ssh-command (ssh if not - specified), and only modifies command [argument] ... and inserts - extra arguments after destination (it may also add a -- argument - immediately before destination) to cause the remote shell it - change working directory to directory, if specified, and execute - the provided command and arguments as a regular command rather - than as shell code joined by together by spaces. + specified), but it rewrites command and the arguments to one + argument that can be passed into ssh(1) to describe each argument + as separate arguments. It may also rewrite destination to remove + information that's not supported by ssh(1) and inserts extra + arguments after it (it may also add a -- argument immediately + before destination) to cause the remote shell it change working + directory to directory, if specified, and execute the provided + command and arguments as a regular command rather than as shell + code joined by together by spaces. OPTIONS sshexec options may be placed at the very beginning enclosed @@ -39,14 +44,98 @@ OPTIONS In the remote, change working directory to directory before executing command. + cd=strict + Fail without executing the command if it's not possible + to set directory as the remote working directory. + + cd=lax + Continue (but warn) executing the command even if it's + not possible to set directory as the remote working + directory. + + [fd]>=file + After changing working directory (assuming one is + specified), create or truncate the specified file and + open it for writing, using file descriptor number fd. + (Default fd is 1 (standard output).) + + [fd]>>=file + After changing working directory (assuming one is + specified), create the specified file if it does not + exist and open it for writing in append-mode, using + file descriptor number fd. (Default fd is 1 + (standard output).) + + [fd]>|=file + After changing working directory (assuming one is + specified), create the specified file, but fail if it + already exists, and open it for writing, using file + descriptor number fd. (Default fd is 1 (standard + output).) + + [fd]<=file + After changing working directory (assuming one is + specified), open the specified file, for reading, using + file descriptor number fd. (Default fd is 0 (standard + input).) + + [fd]<>=file + After changing working directory (assuming one is + specified), open the specified file, for reading and + writing, creating it if it does not already exist, + using file descriptor number fd. (Default fd is 0 + (standard input).) + + [fd]{>,>>,>|}&=file + Duplicate the file descriptor fd giving the new file + descriptor the number file. (Default fd is 1 (standard + output).) + + [fd]{>,>>,>|}&=- + Close the file descriptor fd. (Default fd is 1 + (standard output).) + + [fd]{<,<>}&=file + Duplicate the file descriptor fd giving the new file + descriptor the number file. (Default fd is 0 (standard + input).) + + [fd]{<,<>}&=- + Close the file descriptor fd. (Default fd is 0 + (standard input).) + + asis=asis-marker + Any argument equal to asis-marker will be skipped over + and instead the next argument (regardless of whether + it to is equal to asis-marker) will be interpreted as + raw shell code string that shall be inserted without + escaping. + + masis=asis-count + If specified, asis-marker shall only have it's specified + affect up to asis-count times. + OPERANDS The following operands are supported: destination - This operand is passed as is (without validation) to - the ssh(1) utility. The ssh(1) utility will expect it - the be either in the form [user@]hostname or in the - form ssh://[user@]hostname[:port]. + The destination to connect and log into. It shall be + eitherin the form [user@]hostname[:directory] or in the + form ssh[exec]://[user@]hostname[:port][/directory]. + + user shall be the name of the remote user. If not + specified, the name of the local user running the + utility will be used. + + hostname shall be the address to the remote machine. + + port shall be the port or service name for the port + to connect to on the remote machine. + + directory shall be directory to change the remote + working directory. This is an alternative to (with the + exact same behaviour) to the dir option and cannot be + combined with it. command [argument] ... Whereas the ssh(1) utility would simply join the command @@ -56,5 +145,93 @@ OPERANDS of the as separate arguments and cause the shell to executing them as a non-builtin command. + command must not contain an equals sign (=) or be just + a dash ("-"). + +ENVIRONMENT VARIABLES + The following environment variables affects the execution of + sshexec: + + PATH + Default. See to the Base Definitions volume of POSIX.1-2017, + Section 8.3, Other Environment Variables. This environment + variable affects where the sshexec utility can find the + ssh(1) utility or ssh-command. + + SSHEXEC_SSH + If set and non-empty, it overrides the default value of + ssh-command from ssh to the value of the variable. + + SSHEXEC_OPTS_NO_ARG + List of options that sshexec shall interpret as ssh(1) + options that do not have any argument. (Default is + 46AaCfGgKkMNnqsTtVvXxYy, meaning the options -4, -6, -A, + -a, -C, -f, -G, -g, -K, -k, -M, -N, -n, -q, -s, -T, -t, + -V, -v, -X, -x, -Y, and -y.) + + SSHEXEC_OPTS_ARG + List of options that sshexec shall interpret as ssh(1) + options that have an argument. (Default is + BbcDEeFIiJLlmOoPpQRSWw, meaning the options -B, -b, -c, + -D, -E, -e, -F, -I, -i, -J, -L, -l, -m, -O, -o, -P, -p, + -Q, -R, -S, -W, and -w.) + + SSHEXEC_OPTS_OPT_ATTACHED_ARG + List of options that sshexec shall interpret as ssh(1) + options that have an argument only if there are + additional characters after the option character in the + same command line argument. (Default is the empty + string, meaning no options.) + + SSHEXEC_OPTS_OPT_ARG + List of options that sshexec shall interpret as ssh(1) + options that have an argument if there are additional + characters after the option character in the same + command line argument or if argument is followed + directly by another argument which does not start with + a dash (-). (Default is the empty string, meaning no + options.) + + SSHEXEC_LONG_OPTS_NO_ARG + Space-separated list of long options that sshexec shall + interpret as ssh(1) options that do not have any + argument unless it is followed directly by an equals + sign (=) in the same command line argument. Options + that do not start with two dashes (--) are silently + ignored. (Default is the empty string, meaning no + options.) + + SSHEXEC_LONG_OPTS_ARG + Space-separated list of long options that sshexec shall + interpret as ssh(1) options that have an argument that + must either be specified in the next command line + argument or after an equals sign (=) the shall directly + follow the option string in the same command line + argument. Options that do not start with two dashes + (--) are silently ignored. (Default is the empty string, + meaning no options.) + + SSHEXEC_LONG_OPTS_OPT_ARG + Space-separated list of long options that sshexec shall + interpret as ssh(1) options that have an argument if + it is the option string is is directly followed by + equals sign (=) in the same command line argument or if + argument is followed directly by another argument which + does not start with a dash (-). Options that do not + start with two dashes (--) are silently ignored. + (Default is the empty string, meaning no options.) + + Other environment variables may affect the execution of the + ssh(1) utility. + +BUGS + The remote shell must be sufficiently similar to sh(1posix). + Namely, it must support the cd builtin command and the commands + exec and printf is expected by POSIX. Additionally, it must + support "$( )", ' ', and &&, and argument separation with the + SP character. The remote shell must also not treat any + alphanumeric character, underscore (_) or slash (/) as special + characters. + SEE ALSO - ssh(1) + ssh(1), sshcd(1) |