diff --git a/login.sh b/login.sh new file mode 100644 index 0000000..1434286 --- /dev/null +++ b/login.sh @@ -0,0 +1,166 @@ +#!/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