#!/bin/bash
#
# Script for analize duplicated entries in the .ssh/known_hosts file
# Copyright (C) 2025 FUSS Project <info@fuss.bz.it>
# Authors: Simone Piccardi <piccardi@truelite.it>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 3 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program or from the site that you downloaded it
# from; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA  02111-1307   USA
#


cd ~

usage () {
    echo "Script to search duplicate entries in known_hosts"
    echo "Usage: $0 [-v]"
}

if [ -n "$1" ]; then
    if [ "$1" == "-v" ]; then
	VERBOSE=yes
    else
	usage
	exit 1
    fi
fi

# print out keys duplicated more than 10 times
awk '{print $3}' .ssh/known_hosts | sort | uniq -c | sort -n | grep -E '^\s*[1-9][0-9]+ ' | while read A B; do
    echo ============================================================
    echo "Key $B found $A times"
    if [ -n "$VERBOSE" ]; then
    echo "for hosts:"
    echo ------------------------------------------------------------
    grep "$B" .ssh/known_hosts |sort|uniq -c|sort -n|awk '{print $1 " " $2}'
    fi
    echo ============================================================
done 
