Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam, mam taką mała sprawę. Nadziobałem sobie skrypcik do backupu i prosiłbym kogoś kumatego bardziej ode mnie o rzucenie okiem i ewentualną podpowiedź co poprawić.
Chciałem to napisać pod sh ale jakoś tak wyszło że działa tylko na bashu ;)
Chodzi mi tu bardziej o poprawność napisania tego, optymalizację niż żeby ten skrypt czynił cuda. Dla mnie to działa tak jak powinno, ale jednak coś mi się w nim nie podoba.
Wrzuciłem to na 2 linki bo nie chce zaśmiecać niepotrzebnie forum.
skrypt http://rafb.net/p/sTq8u053.html
mały konfig do niego http://rafb.net/p/dwQRMB24.html
Za wszelakie uwagi będę wdzięczny.
Pozdrawiam
Offline
przepisanie do "koszernego" sh nie stanowi raczej większego problemu ( BTW: polecam skrypt checkbashisms z któregoś z debianowo-deweloperskich pakietów):
1. wywal wszystkie funtion nazwa(), wystarczy samo nazwa()
2. if [ ! `${PING} &>/dev/null` ]
a) nawiasów tu nie powinno być: if ! polecenie; then
b) &>/dev/null zamień na >/dev/null 2>&1
3. pozbądź się bashowych tablic
DIRECTORY_TO_ARCHIVE=(/bin /tmp/dupa) for (( x=0; x < ${#DIRECTORY_TO_ARCHIVE[@]}; x++ )); do if [ ! -d "${DIRECTORY_TO_ARCHIVE[${x}]}" ]; then error "${DIRECTORY_TO_ARCHIVE[${x}]} nie istnieje" fi done
zamień na coś takiego
DIRECTORY_TO_ARCHIVE='/bin,/tmp/dupa' for ELEMENT in `echo $DIRECTORY_TO_ARCHIVE | tr ',' ' '`; do echo $ELEMENT done
nie polecam source'owania plików konfiguracyjnych (a jeśli już, raczej to robić poleceniem source niż ., "source" jest lepiej widoczne), tylko awkiem je przerabiać, o tak (awk dzięki uprzejmości uruga)
eval $(awk -F'=' '/.+=.+/{ if ( $1 == "CODE" || $1 == "FORMAT" || $1 == "ICONSIZE" || $1 == "BROWSER" || $1 == "LOWTEMP" || $1 == "HITEMP" || $1 == "SCALE" ) print $1 "=" $2 }' ${CONFIGFILE})
CODE, FORMAT... to kolejne nazwy zmiennych, które chcę wczytać z wartościami
poza tym przed wczytaniem konfigu sprawdź czy istnieje i da sie go odczytać, daj też w skrypcie wartości domyślne, na wypadek, gdyby się nie dało
to tak na szybko, jutro pewnie więcej :)
Ostatnio edytowany przez azhag (2009-01-26 22:06:42)
Offline
O wielki dzięki azhag. Właśnie te tablice mi się nie podobały a nie wiedziałem jak je ugryźć. Już zaczynam przeróbkę ;p Jak coś to będę pytał dalej.
Ostatnio edytowany przez skotx (2009-01-26 23:27:35)
Offline
Dobra, wszystko gra i buczy ;) Mam jeszcze jedno pytanie bo męczę się z tym od 1,5 h i nie wiem jak to zrobić.
debian:/home/skotik# df -h System plików rozm. użyte dost. %uż. zamont. na /dev/sda2 6,6G 2,5G 4,1G 39% / tmpfs 474M 0 474M 0% /lib/init/rw udev 10M 108K 9,9M 2% /dev tmpfs 474M 0 474M 0% /dev/shm /dev/sda1 183M 28M 146M 16% /boot /dev/sda5 4,7G 2,7G 2,1G 57% /home /dev/sda6 19G 12G 6,9G 63% /magazyn1 /dev/sda7 19G 11G 8,5G 55% /magazyn2 /dev/sda9 25G 6,5G 19G 26% /poligon
Chce dostać tylko informacje typu:" /dev/sda1 16%" kolejno dla wszystkich partycji. Wydaje się banalnie proste ale nie doszedłem do tego na razie jak to wypisać nie zapisując wyniku polecenia do pliku.
Ostatnio edytowany przez skotx (2009-01-29 22:17:06)
Offline
df -h | awk '/^\//{print $1" "$5}'
(tmpfs i udev rozumiem, że cię nie interesują?)
Offline
azhag napisał(-a):
Kod:
df -h | awk '/^\//{print $1" "$5}'(tmpfs i udev rozumiem, że cię nie interesują?)
hehe byłem blisko ;) Oczywiście bez tego co napisałeś. Trzeba popracować więcej z awk bo bez tego ani rusz. Jeszcze raz dzięki.
Offline