#!/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