167 lines
4.7 KiB
Bash
167 lines
4.7 KiB
Bash
#!/bin/bash
|
|
|
|
# Skrypt do logowania na 3 serwery SSH z hasłem "changeme"
|
|
|
|
# Kolorowe komunikaty
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${YELLOW}=== Skrypt logowania SSH z diagnostyką ===${NC}"
|
|
|
|
# Sprawdź, czy sshpass jest zainstalowany
|
|
if ! command -v sshpass &> /dev/null; then
|
|
echo -e "${RED}sshpass nie jest zainstalowany. Instaluję...${NC}"
|
|
|
|
# Sprawdź system i zainstaluj sshpass
|
|
if [[ -f /etc/debian_version ]]; then
|
|
sudo apt-get update && sudo apt-get install -y sshpass
|
|
elif [[ -f /etc/redhat-release ]]; then
|
|
sudo yum install -y sshpass
|
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
|
|
else
|
|
echo -e "${RED}Nie można automatycznie zainstalować sshpass. Zainstaluj ręcznie.${NC}"
|
|
echo "Ubuntu/Debian: sudo apt-get install sshpass"
|
|
echo "RHEL/CentOS: sudo yum install sshpass"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Tablica z adresami IP (zmień na swoje)
|
|
IP_ADDRESSES=("172.23.72.109" "172.23.75.40" "172.23.72.10")
|
|
HASLO="changeme"
|
|
UZYTKOWNIK="debian" # Ustawiony na debian zgodnie z Twoim testem
|
|
PORT=22
|
|
|
|
echo "Używane parametry:"
|
|
echo "Hasło: $HASLO"
|
|
echo "Użytkownik: $UZYTKOWNIK"
|
|
echo "Port: $PORT"
|
|
echo ""
|
|
|
|
# Testuj najpierw ping
|
|
echo -e "${BLUE}=== Test dostępności (ping) ===${NC}"
|
|
for ip in "${IP_ADDRESSES[@]}"; do
|
|
echo -n "Ping $ip: "
|
|
if ping -c 1 -W 2 "$ip" &> /dev/null; then
|
|
echo -e "${GREEN}OK${NC}"
|
|
else
|
|
echo -e "${RED}FAILED${NC}"
|
|
fi
|
|
done
|
|
echo ""
|
|
|
|
# Testuj port SSH
|
|
echo -e "${BLUE}=== Test portu SSH ===${NC}"
|
|
for ip in "${IP_ADDRESSES[@]}"; do
|
|
echo -n "Port $PORT na $ip: "
|
|
if timeout 2 nc -z "$ip" "$PORT" &> /dev/null; then
|
|
echo -e "${GREEN}OTWARTY${NC}"
|
|
else
|
|
echo -e "${RED}ZAMKNIĘTY${NC}"
|
|
fi
|
|
done
|
|
echo ""
|
|
|
|
# Funkcja do testowania połączenia SSH z różnymi metodami
|
|
testuj_polaczenie() {
|
|
local ip=$1
|
|
echo -e "${YELLOW}Próba połączenia SSH z $ip...${NC}"
|
|
|
|
# METODA 1: sshpass z wyświetlaniem błędów
|
|
echo -n "Metoda 1 (sshpass): "
|
|
sshpass -p "$HASLO" ssh -o StrictHostKeyChecking=no \
|
|
-o ConnectTimeout=5 \
|
|
-o PasswordAuthentication=yes \
|
|
-o PubkeyAuthentication=no \
|
|
-p $PORT \
|
|
$UZYTKOWNIK@$ip "echo 'SSH OK'" 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
echo -e "${GREEN}✓ SUCCESS${NC}"
|
|
return 0
|
|
else
|
|
echo -e "${RED}✗ FAILED${NC}"
|
|
fi
|
|
|
|
# METODA 2: sshpass z krótkim poleceniem
|
|
echo -n "Metoda 2 (krótkie polecenie): "
|
|
if echo "exit" | sshpass -p "$HASLO" ssh -o ConnectTimeout=3 "$UZYTKOWNIK@$ip" &> /dev/null; then
|
|
echo -e "${GREEN}✓ SUCCESS${NC}"
|
|
return 0
|
|
else
|
|
echo -e "${RED}✗ FAILED${NC}"
|
|
fi
|
|
|
|
# METODA 3: Manualna symulacja (do debugowania)
|
|
echo -e "${BLUE}Manualna próba (skopiuj i wklej):${NC}"
|
|
echo " sshpass -p '$HASLO' ssh $UZYTKOWNIK@$ip"
|
|
echo ""
|
|
|
|
return 1
|
|
}
|
|
|
|
# Główna pętla dla wszystkich adresów IP
|
|
echo -e "${YELLOW}=== Szczegółowe testy SSH ===${NC}"
|
|
echo "=========================================="
|
|
|
|
udane=0
|
|
nieudane=0
|
|
wyniki=()
|
|
|
|
for ip in "${IP_ADDRESSES[@]}"; do
|
|
echo ""
|
|
echo -e "${BLUE}>>> Test dla: $ip <<<${NC}"
|
|
|
|
testuj_polaczenie "$ip"
|
|
wynik=$?
|
|
|
|
if [ $wynik -eq 0 ]; then
|
|
((udane++))
|
|
wyniki+=("$ip: SUCCESS")
|
|
else
|
|
((nieudane++))
|
|
wyniki+=("$ip: FAILED")
|
|
fi
|
|
|
|
echo "------------------------------------------"
|
|
done
|
|
|
|
# Podsumowanie
|
|
echo ""
|
|
echo "========================================"
|
|
echo -e "${YELLOW}PODSUMOWANIE:${NC}"
|
|
echo ""
|
|
|
|
for wynik in "${wyniki[@]}"; do
|
|
if [[ $wynik == *"SUCCESS"* ]]; then
|
|
echo -e "${GREEN}$wynik${NC}"
|
|
else
|
|
echo -e "${RED}$wynik${NC}"
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo -e "${GREEN}Udane połączenia: $udane${NC}"
|
|
echo -e "${RED}Nieudane połączenia: $nieudane${NC}"
|
|
|
|
# Zapisz wynik do pliku logu
|
|
DATA=$(date '+%Y-%m-%d %H:%M:%S')
|
|
echo "[$DATA] Udane: $udane, Nieudane: $nieudane" >> ssh_connection_log.txt
|
|
echo -e "${BLUE}Wynik zapisano do: ssh_connection_log.txt${NC}"
|
|
|
|
# Dodatkowe sugestie
|
|
echo ""
|
|
echo -e "${YELLOW}=== SUgestie rozwiązywania problemów ===${NC}"
|
|
echo "1. Sprawdź czy serwery są włączone"
|
|
echo "2. Sprawdź czy użytkownik '$UZYTKOWNIK' istnieje na serwerach"
|
|
echo "3. Sprawdź czy hasło jest poprawne"
|
|
echo "4. Sprawdź czy SSH jest skonfigurowany do akceptowania logowania hasłem"
|
|
echo "5. Sprawdź firewalle i reguły sieciowe"
|
|
echo "6. Spróbuj ręcznie: ssh $UZYTKOWNIK@172.23.72.109"
|
|
echo ""
|
|
|
|
exit 0
|