diff options
author | Philip Hands <phil@hands.com> | 2024-08-04 20:45:00 +0200 |
---|---|---|
committer | Darren Tucker <dtucker@dtucker.net> | 2024-08-17 03:19:37 +0200 |
commit | 7fc9ccdce18841ebd0a97e31e43258512ab32a32 (patch) | |
tree | def0f24da0fcdde468a7d1b844019fb894376b01 | |
parent | avoid exploring .ssh/id*.pub subdirectories (diff) | |
download | openssh-7fc9ccdce18841ebd0a97e31e43258512ab32a32.tar.xz openssh-7fc9ccdce18841ebd0a97e31e43258512ab32a32.zip |
restore optionality of -i's argument
SSH-Copy-ID-Upstream: f70e3abb510e4eeb040b47894e41828246c1b720
-rw-r--r-- | contrib/ssh-copy-id | 18 | ||||
-rw-r--r-- | contrib/ssh-copy-id.1 | 2 |
2 files changed, 18 insertions, 2 deletions
diff --git a/contrib/ssh-copy-id b/contrib/ssh-copy-id index 4798a4dbd..6251201b2 100644 --- a/contrib/ssh-copy-id +++ b/contrib/ssh-copy-id @@ -114,7 +114,9 @@ if [ -n "$SSH_AUTH_SOCK" ] && ssh-add -L >/dev/null 2>&1 ; then GET_ID="ssh-add -L" fi -while getopts "i:o:p:F:t:fnsxh?" OPT +OPTS="io:p:F:t:fnsxh?" + +while getopts "$OPTS" OPT do case "$OPT" in i) @@ -123,6 +125,20 @@ do usage } SEEN_OPT_I="yes" + + # Check for -i's optional parameter + eval "nextarg=\${$OPTIND}" + # shellcheck disable=SC2154 + if [ $OPTIND = $# ]; then + if [ -r "$nextarg" ] && grep -iq ssh "$nextarg"; then + printf '\n%s: ERROR: Missing hostname. Use "-i -- %s" if you really mean to use this as the hostname\n\n' "$0" "$nextarg" >&2 + usage + fi + elif ! expr -- "$nextarg" : "-[$(echo "$OPTS" | tr -d :)-]" >/dev/null ; then + # when not at the last arg, and not followed by an option, -i has an argument + OPTARG="$nextarg" + OPTIND=$((OPTIND + 1)) + fi use_id_file "${OPTARG:-$DEFAULT_PUB_ID_FILE}" ;; o|F) diff --git a/contrib/ssh-copy-id.1 b/contrib/ssh-copy-id.1 index 74eec2f8e..cc74e432b 100644 --- a/contrib/ssh-copy-id.1 +++ b/contrib/ssh-copy-id.1 @@ -67,7 +67,7 @@ command instead. .Pp The options are as follows: .Bl -tag -width Ds -.It Fl i Ar identity_file +.It Fl i Op Ar identity_file Use only the key(s) contained in .Ar identity_file (rather than looking for identities via |