voidrice/.local/bin/delete_certain_known_hosts
2020-04-10 15:26:32 -05:00

23 lines
779 B
Bash
Executable File

#!/bin/bash
# Deletes certain lines of ~/.ssh/known_hosts
if [ $# -eq 0 ]; then
echo "Usage: ./delete_certain_known_hosts 3 5 7 23"
echo "Will catch duplicate line numbers"
exit 1
fi
known_hosts_path=~/.ssh/known_hosts
lines_in_known_hosts=$(wc -l "$known_hosts_path" | awk '{print $1}')
IFS=' '
deduped_args=$(echo "$@" | xargs -n1 | sort -nu | xargs)
read -r -a delete_these_lines <<< "$deduped_args"
lines_to_delete=""
for var in "${delete_these_lines[@]}"; do
if [[ "$var" -gt "$lines_in_known_hosts" ]]; then
echo "$var isnt valid line in $lines_in_known_hosts line $known_hosts_path"
else
lines_to_delete+="${var}d;"
fi
done
sed -i "$lines_to_delete" "$known_hosts_path"
echo "Deleted lines $(echo $(echo $lines_to_delete | sed 's/d;/, /g') | sed 's/.$//' )"