Monitor repozytoriów Debiana - użycie w skryptach

Oprócz zwykłego monitora na naszej stronie, udostępniamy również jego formę tekstową. Ma ona tę zaletę, iż w łatwy sposób można ją przerobić, aby wyświetlić aktualny stan repozytorium w dowolnej formie — w monitorze systemu (np. Conky), we własnym programie lub skrypcie, w konsoli itd.

Adresy plików

Raporty w formie tekstowej dla odpowiedniej gałęzi Debiana można pobrać z:

Format plików

Pliki zaczynają się od krótkiego komentarza (linie zaczynające się od #) zawierającego informacje na temat monitora. Poniżej znajdują się wartości dla poszczególnych architektur, oddzielone średnikiem. Kolejno są to:

  1. architektura
  2. procentowa liczba pakietów z niespełnionymi zależnościami (bez znaku procenta)
  3. liczba pakietów z niespełnionymi zależnościami
  4. liczba wszystkich pakietów
  5. pogodowy opis stanu repozytorium po polsku
  6. pogodowy opis stanu repozytorium po angielsku

Przykładowy plik:

# Format i sposób przetwarzania opisano na
# http://dug.net.pl/monitor/skrypty/
i386;0,00;0;28232;Słonecznie;Clear
amd64;0,02;5;28130;Słonecznie;Clear
armel;0,25;70;27559;Słonecznie;Clear
kfreebsd-i386;1,62;419;25873;Lekkie zachmurzenie;Few clouds
kfreebsd-amd64;1,64;424;25881;Lekkie zachmurzenie;Few clouds

Przetwarzanie plików

Najprościej zapisany plik można przetworzyć przy pomocy programu awk:

$ awk -F ';' '$1=="ARCHITEKTURA" {print "FORMAT"}' monitor_stable.txt

gdzie:

  • ARCHITEKTURA to interesująca nas architektura Debiana
  • FORMAT to format, w jakim chcemy wyświetlić dane — można przy tym stosować zmienne $1, $2 itd., które odpowiadają za kolejne pola (uwaga: zmienne muszą być umieszczone poza cudzysłowem), oraz znaki specjalne typu \n, \t

Przykładowe użycie:

$ awk -F ';' '$1=="i386" {print "W architekurze " $1 " znajduje się " $2 "% pakietów z niespełnionymi zależnościami."}' monitor_stable.txt
W architekurze i386 znajduje się 0,00% pakietów z niespełnionymi zależnościami.

Można również przerobić dane w locie, bez zapisywania pliku:

$ wget -q -O - http://dug.net.pl/monitor/monitor_stable.txt | awk ...

lub, korzystając z eval, wczytać dane jako zmienne:

$ eval `awk -F ';' '$1=="i386" {print "ARCHITEKTURA=\"" $1 "\" PROCENTY=\"" $2 "%\""}' monitor_stable.txt`
$ echo $ARCHITEKTURA
i386
$ echo $PROCENTY
0,00%