Láma shell script kérdés

Fórumok

Láma shell script kérdés

Hozzászólások

Hali,

pls írjátok le nekem, hogy lehet azt megcsinálni, hogy egy parancs visszatérési értékét vizsgáljam if-ben, hogy 1-e? Úgy rémlett, hogy `` jelek közt kimenet van, különben meg visszatérési érték, szal ezt csináltam, csak így valami nem jó:

COND="fgrep ntpd"

if $COND=1; then
...
fi

Előre is köszi a választ. Cron script lesz amúgy, hogy vizsgálja, hogy fut-e az ntpd.

Ennyi, ui a $? környezeti változó tartalmazza az utoljára lefuttatott parancs státuszát:
[code:1:624d6c0804]AzÉnParancsom;
if [[ $? = 1 ]]; then echo ezt vártam
fi
[/code:1:624d6c0804]

[quote:5a96d0c829="Panther"]Ennyi, ui a $? környezeti változó tartalmazza az utoljára lefuttatott parancs státuszát:
[code:1:5a96d0c829]AzÉnParancsom;
if [[ $? = 1 ]]; then echo ezt vártam
fi
[/code:1:5a96d0c829]

Szupi, müxik, köszi.

Mivel az if parancsnak feltetelként egy listát lehet megadni, és annak visszatérési érteke alapján dönt, ezért nincs is szükseg a spec. változókra.
[code:1:47302f8a11]if ps aux|frep -q ntpd; then echo szerintem fut; fi[/code:1:47302f8a11]

Egyébként, ezt nem a processzek közti kereséssel ellenőrizném, mert egy mókás user elkezd futtatni egy ntpd nevu scriptet, es maris kesz a meglepetes. Vagy nagyon percizen kell jatszadoznod a grep-pel.
Én inkább azt figyelném, hogy nyitva van-e az ntp portja:
[code:1:47302f8a11]netstat -uan| grep ":123"[/code:1:47302f8a11]

Ja, és egy jól szerkesztett paranccsal, még az if-et is megspórolhatjuk az egészből:
[code:1:47302f8a11]netstat -uan| grep -q ":123" || /etc/init.d/ntp-server start[/code:1:47302f8a11]

[quote:c95a6a7ae6="miq"]Mivel az if parancsnak feltetelként egy listát lehet megadni, és annak visszatérési érteke alapján dönt, ezért nincs is szükseg a spec. változókra.
[code:1:c95a6a7ae6]if ps aux|frep -q ntpd; then echo szerintem fut; fi[/code:1:c95a6a7ae6]

Egyébként, ezt nem a processzek közti kereséssel ellenőrizném, mert egy mókás user elkezd futtatni egy ntpd nevu scriptet, es maris kesz a meglepetes. Vagy nagyon percizen kell jatszadoznod a grep-pel.
Én inkább azt figyelném, hogy nyitva van-e az ntp portja:
[code:1:c95a6a7ae6]netstat -uan| grep ":123"[/code:1:c95a6a7ae6]

Ja, és egy jól szerkesztett paranccsal, még az if-et is megspórolhatjuk az egészből:
[code:1:c95a6a7ae6]netstat -uan| grep -q ":123" || /etc/init.d/ntp-server start[/code:1:c95a6a7ae6]

Hm, szép. Kettes visszatérési értéket hogy szűröd ki? man grepből:

Normally, exit status is 0 if selected lines are found and 1 otherwise. But the exit status is 2 if an error occurred, unless
the -q or --quiet or --silent option is used and a selected line is found.

if pidof /usr/sbin/akarmi >/dev/null; then echo fut; fi

[quote:0719b8bbdd="Panther"]
Hm, szép. Kettes visszatérési értéket hogy szűröd ki? man grepből:

Normally, exit status is 0 if selected lines are found and 1 otherwise. But the exit status is 2 if an error occurred, unless
the -q or --quiet or --silent option is used and a selected line is found.

Szerintem kettes visszateresi erteket csak akkor ad, ha valami gondja van a parametereinek az ertelmezesevel. Pl. nem letezo kapcsolot hasznalsz, vagy nem letezo file-ban probalsz greppelni. Ez az eset itt nem all fent. Egyebkent pedig abban az esetben is megprobalna inditani az ntpd-t. Estetleg start helyett erdemesebb restartot hasznalni.

[quote:03a62cff70="miq"]
Egyébként, ezt nem a processzek közti kereséssel ellenőrizném, mert egy mókás user elkezd futtatni egy ntpd nevu scriptet, es maris kesz a meglepetes. Vagy nagyon percizen kell jatszadoznod a grep-pel.
Én inkább azt figyelném, hogy nyitva van-e az ntp portja:
[code:1:03a62cff70]netstat -uan| grep ":123"[/code:1:03a62cff70]

Akkor annak a mókamesternek kitekerem a nyakát. :D

[quote:03a62cff70="miq"]
Ja, és egy jól szerkesztett paranccsal, még az if-et is megspórolhatjuk az egészből:
[code:1:03a62cff70]netstat -uan| grep -q ":123" || /etc/init.d/ntp-server start[/code:1:03a62cff70]

Ez ötletes megoldás, tetszik, szerintem majd átírom erre.

[quote:03a62cff70="vmiklos"]
if pidof /usr/sbin/akarmi >/dev/null; then echo fut; fi

Erre is gondoltam, viszont igaz, hogy Linux topicba írtam, de FreeBSD alatt csinálom, ott meg nincs pidof.