From 7dc7dfc9cab4d45bb193448d1ee0284f98772075 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Mon, 13 Mar 2017 19:29:15 -0300 Subject: Moves ssh-keysend to utils-ssh --- ssh-keysend | 124 ------------------------------------------------------------ 1 file changed, 124 deletions(-) delete mode 100755 ssh-keysend diff --git a/ssh-keysend b/ssh-keysend deleted file mode 100755 index fc9b129..0000000 --- a/ssh-keysend +++ /dev/null @@ -1,124 +0,0 @@ -#! /bin/bash -# Copyright (c) 2007 Andrés J. Díaz -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without restriction, -# including without limitation the rights to use, copy, modify, merge, -# publish, distribute, sublicense, and/or sell copies of the Software, -# and to permit persons to whom the Software is furnished to do so, -# subject to the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Downloaded from https://launchpad.net/ssh-keysend - -ssh_keysend_db_keys=( ~/.ssh/*.pub ) -ssh_keysend_db_host=( ~/.ssh/known_hosts ) - -log_level=0 - -fatal () { echo "fatal: $@" >&2 ; ${E:+exit $E}; } -require () { type -p "$1" 2>&1 >/dev/null; } -debug () { :; } -list () { :; } - -help () -{ - echo "$0 [options] ..." - echo - echo "ssh-keysend send a number of public ssh keys to a different" - echo "machines over a network. user@host is the user in the hostname" - echo "host who ssh-keysend will authorize in a list of remotehosts." - echo - echo "Options:" - echo " -h display this help screen" - echo " -v increase verbosity" - echo " -p pretend. Do not do really" - echo " -K file use file as key database" - echo " -H file use file as host database" - echo - echo "Andrés J. Díaz " -} - -verbose () { - debug () { echo "debug::$@" >&2; } - list () { - for item in "$@"; do - if [ "${item%% *}" != "${item## *}" ] - then - debug " [${item%% *}] ${item##* } " - else - debug " ${item}" - fi - done; - } -} - -# Parse options in command line using getopts. -while getopts "hvpK:H:" option "$@"; do - case $option in - v) verbose ;; - h) help && exit 0 ;; - p) pretend=true ;; - K) ssh_keysend_db_keys="$OPTARG" ;; - H) ssh_keysend_db_host="$OPTARG" ;; - esac -done ; shift $((OPTIND -1)) - -# Check if pattern search argument exists, if not then exit with error code -# one. If @ is not present in pattern search, add wildcard automatically. -[ "$1" ] || E=1 fatal $"user@host not specified." -user="$1"; shift -[ "${user%@*}" = "${user}" ] && set -- "${user:-.*}@.*" "$@" - -debug "Found pattern keys is: $1" -debug "Found pattern host is: ${2:-.*}" - -# Getting the keys which matching with pattern search into ssh-keysend -# public keys database. -keys="$( - awk "/[ ]$1$/ { printf \"'%s'\n\",\$0 }" "${ssh_keysend_db_keys[@]}" -)" -eval keys=( $keys ) -debug $"Found ${#keys[@]} key(s) for specified pattern matching." -list "${keys[@]}" - -# Getting the hosts which we will send the specified keys via ssh-keysend. -host="$( - awk "/^${2:-.*}/ { gsub(\",.*\",\"\"); printf \"'%s'\n\",\$1 }" \ - "${ssh_keysend_db_host[@]}" -)" -eval host=( $host ) -debug $"Affected ${#host[@]} host(s) for current action." -list "${host[@]}" - -# The keys() function return a short list of keys to be exported, including -# the user@host and key type. -keys () -{ - oldIFS="$IFS" ; export IFS=$'\n' - keys="${keys[*]}"; export IFS="$oldIFS" - echo "${keys}" -} - -# If running in pretend mode, then it's a good moment to exit. -${pretend:-false} && exit 0 - -# For each host try to put ssh key in respective authorized_keys file. -for host in "${host[@]}" ; do - [ "${host##*@}" = "${host}" ] && host="$user@$host" - debug "Sending keys to $host..." - keys | ssh "$host" "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" -done - -# vim:foldmethod=syntax:foldenable: -- cgit v1.2.3