Witam
W pracy na urządzeniu LinkSys WRT54GL oraz oprogramowaniu Tomato ver. 1.22 mam napisać skrypt który umożliwi generowanie informacji o obciążeniu bezprzewodowej sieci komputerowej (download, upload). Do tego wykorzystałem łańcuchy iptables i obciążenie jest ładnie generowane (w konsoli ładnie się wyświetlają w kolumnach które są czytelne) i równocześnie zapisują się w pliku z logami na urządzeniu (niestety tutaj wszystko zapisuje się w jednej linii - co sprawia że jest to mało czytelne).
kod do gromadzenia informacji:
#iptables -N download
#iptables -N upload
#iptables -I FORWARD 1 -j download
#iptables -I FORWARD 2 -j upload
#iptables -A download -d 192.168.1.2
#iptables -A upload -s 192.168.1.2
#iptables -A download -d 192.168.1.4
#iptables -A upload -s 192.168.1.4
#iptables -A download -d 192.168.1.5
#iptables -A upload -s 192.168.1.5
#iptables -A download -d 192.168.1.6
#iptables -A upload -s 192.168.1.6
Niestety zależy mi na tym aby te informacje były w tym pliku czytelne ponieważ muszę je później do czegoś innego wykorzystać. Szukając po internecie znalazłem informację, że po dodaniu CRONA w Administration i zakładce Scheduler poniższego kodu informacje w pliku ładnie się będą zapisywać w kolumnach. Oczywiście wkleiłem skrypt zapisałem ustawienia i działa tak jak chciałem.
Problem w tym że muszę ten kod wyjaśnić co pokolei on robi. Niestety nie znam tego języka i tu problem.
Jeśli ktoś wie jak on działa to z góry dziękuję za odpowiedź...
Kod dodany do CRONA:
(echo "IP Download Upload" && \
(iptables -L download -vn | sed -n "/0/ s/ *[0-9]* *\([^ ]*\)[^1-9]*\([0-9\.]*\).*/\2D\1/p" \
&& iptables -L upload -vn | sed -n "/0/ s/ *[0-9]* *\([^ ]*\)[- 0\*]*\([0-9\.]*\).*/\2U\1/p" ) \
| sort | sed -n "/D/{N;s/\([^D]*\)D\([^\n]*\)\n\([^U]*\)U\(.*\)/\1\t\2\t\t\4/p }") \
| sed -e "s/^/logger \"/; s/$/\"/" | /bin/sh