Upload files to "/"
ssh connection test
This commit is contained in:
166
login.sh
Normal file
166
login.sh
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user