sidn-lxd-ansible-demo/bin/add_ssh_known_host

28 lines
780 B
Bash
Executable File

#!/bin/bash
SSH_DIR="${HOME}/.ssh"
KNOWN_HOSTS="${SSH_DIR}/known_hosts"
NEW_KNOWN_HOSTS="${KNOWN_HOSTS}..SWAP$$"
BACKUP_KNOWN_HOSTS="${KNOWN_HOSTS}.old"
if [ "$1" = "" ]; then
echo "Usage: $0 <ip / hostname> [private key file for testing]" >&2
exit 1
fi
REMOTE_HOST=$1
TEST_KEY=$2
# Here flock is used, because we might be adding multiple hosts at the
# same time, resulting in race conditions on writing the known_hosts file.
echo "Add the target host $REMOTE_HOST to $KNOWN_HOSTS"
(
flock -e 200
touch $KNOWN_HOSTS
(cat $KNOWN_HOSTS; ssh-keyscan $REMOTE_HOST 2>/dev/null) | sort | uniq > $NEW_KNOWN_HOSTS
cp $KNOWN_HOSTS ${KNOWN_HOSTS}.bak
cp $KNOWN_HOSTS $BACKUP_KNOWN_HOSTS
mv $NEW_KNOWN_HOSTS $KNOWN_HOSTS
) 200>${KNOWN_HOSTS}..LCK
exit 0