github.com/vmware/govmomi@v0.37.2/govc/examples/lib/ssh.sh (about)

     1  function public-key {
     2    local dir=${HOME}/.ssh
     3  
     4    for f in $HOME/.ssh/{id_{rsa,dsa},*}.pub; do
     5      if [ -r $f ]; then
     6        echo $f
     7        return
     8      fi
     9    done
    10  
    11    echo "Can't find public key file..."
    12    exit 1
    13  }
    14  
    15  PUBLIC_KEY_FILE=${PUBLIC_KEY_FILE-$(public-key)}
    16  SSH_OPTS="-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oLogLevel=quiet"
    17  
    18  function upload-public-key {
    19    local vm_name=$1
    20    local dir=$2
    21  
    22    if [ -z "$dir" ]
    23    then
    24      uid=$(echo $GOVC_GUEST_LOGIN | awk -F: '{print $1}')
    25      dir=$(govc guest.getenv -vm ${vm_name} HOME | awk -F= '{print $2}')
    26  
    27      if [ -z "$dir" ]
    28      then
    29        echo "Can't find ${uid}'s HOME dir..."
    30        exit 1
    31      fi
    32    fi
    33  
    34    govc guest.mkdir \
    35         -vm ${vm_name} \
    36         -p \
    37         ${dir}/.ssh
    38  
    39    govc guest.upload \
    40         -vm ${vm_name} \
    41         -f \
    42         ${PUBLIC_KEY_FILE} \
    43         ${dir}/.ssh/authorized_keys
    44  }