Newer
Older
smart-home / testowe / check_status.sh
#!/bin/bash

# Funkcja wyświetlająca pomoc
show_help() {
    echo "Użycie: $0 [OPCJE]"
    echo
    echo "Opcje:"
    echo "  --show_active_output    Wyświetl tylko sterowniki z aktywnymi wyjściami"
    echo "  --all                   Wyświetl pełne informacje o sterownikach"
    echo "  --help                  Wyświetl tę pomoc"
    exit 1
}

# Jeśli nie podano żadnych argumentów, wyświetl pomoc
if [ $# -eq 0 ]; then
    show_help
fi

# Domyślne wartości parametrów
show_active_output=false  # Domyślnie nie pokazujemy aktywnych wyjść
show_all=false            # Domyślnie nie pokazujemy wszystkich informacji

# Sprawdzenie, jakie parametry zostały podane
for arg in "$@"; do
    case $arg in
        --show_active_output)
        show_active_output=true
        shift
        ;;
        --all)
        show_all=true
        shift
        ;;
        --help)
        show_help
        shift
        ;;
        *)
        echo "Nieznana opcja: $arg"
        show_help
        ;;
    esac
done

# Plik XML, z którego będziemy pobierać wartości Address
xml_file="ibvunit/ibvunit.xml"

# Wyciągnięcie wartości Address tylko z sekcji <Devices>
awk '/<Devices/,/<\/Devices>/' "$xml_file" | grep -oP 'Address="\K\d+' | while read -r address; do
    # Uruchomienie polecenia dla każdej wartości Address
    output=$(./ibls -a 127.0.0.1 --pretty -p 2001 -c "get(rs.0.id.$address.out;);")
    
    # Jeśli parametr show_all jest ustawiony na 'true', pokaż pełne wyjście polecenia
    if [ "$show_all" = true ]; then
        echo "Sterownik id.$address:"
        echo "$output"
    fi
    
    # Jeśli parametr show_active_output jest ustawiony na 'true', wyświetl tylko sterowniki z włączonymi wyjściami
    if [ "$show_active_output" = true ]; then
        active_outputs=$(echo "$output" | grep -oP 'do\.\d+ = 1')
        
        if [ -n "$active_outputs" ]; then
            echo "Sterownik id.$address ma aktywne wyjścia:"
            echo "$active_outputs" | while read -r line; do
                output_name=$(echo "$line" | cut -d' ' -f1)  # wyciągnięcie nazwy wyjścia, np. do.0
                echo "Włączone wyjście: $output_name"
            done
        fi
    fi
done