Shell script error

Kit

Re:Shell script error
« Odpověď #15 kdy: 19. 06. 2018, 11:13:08 »
naco je tam vobec ten cyklus? text emailu naformatujem v tom awk a prepipujem do mailx. ci mi nieco unika?

Když to takhle uděláš, tak se e-mail pošle pokaždé, což určitě nechceme. Také by byl problém naplnit parametr "-s".

Dal by se však zavolat mailx přímo z awk, což by mohlo být zajímavé řešení.


FAT32

Re:Shell script error
« Odpověď #16 kdy: 19. 06. 2018, 11:19:20 »
Vypadá to, že jsi měl zřejmě pravdu
Kód: [Vybrat]
./disk_check.sh: ^M:  not found
./disk_check.sh: syntax error at line 2 : `while' unmatched

Takže když tam vrátíš "done", uložíš do souboru a na začátek napíšeš "#!/bin/sh", tak by to mělo fungovat.

Nuže..zadal jsem cestu do ke svému "sh"

Kód: [Vybrat]
#!/usr/bin/sh
bdf | awk '/^\/opt\/xip\/xib\// { if($5>=90) print $5 " " $1 }' |
    while read usep partition; do
        echo "Running out of space \"$partition ($usep)\""|
            mailx -s "Alert: Almost out of disk space $usep" email@server.com
    done

Ale error stále stejný..
Kód: [Vybrat]
./disk_check.sh[2]: ^M:  not found.
./disk_check.sh[3]: Syntax error at line 6 : `done' is not expected.

Nejsem si jistý co je špatně, zkoušel jsem použít místo "sh" obdobu "ksh" tedy
Kód: [Vybrat]
#!/usr/bin/ksh ale to mi vyplivlo stejný error na s řádkem 6.

erik80

Re:Shell script error
« Odpověď #17 kdy: 19. 06. 2018, 11:30:06 »

Když to takhle uděláš, tak se e-mail pošle pokaždé, což určitě nechceme.
neposle, ved v tom awk je podmienka, dalej prejdu len riadky s $5>90


Také by byl problém naplnit parametr "-s".

to ano, subject by musel byt genericky


Dal by se však zavolat mailx přímo z awk, což by mohlo být zajímavé řešení.
to ano, ale osobne nemam rad taketo volania z awk. 

Kit

Re:Shell script error
« Odpověď #18 kdy: 19. 06. 2018, 11:38:29 »

Když to takhle uděláš, tak se e-mail pošle pokaždé, což určitě nechceme.
neposle, ved v tom awk je podmienka, dalej prejdu len riadky s $5>90

Prázdný string je také string, mailx pošle prázdnou zprávu. To nechceš.

Kit

Re:Shell script error
« Odpověď #19 kdy: 19. 06. 2018, 11:41:58 »
Kód: [Vybrat]
./disk_check.sh[2]: ^M:  not found.
./disk_check.sh[3]: Syntax error at line 6 : `done' is not expected.

To vypadá, jako kdybys měl dosovský konec řádku. Zkus hexdump.


erik80

Re:Shell script error
« Odpověď #20 kdy: 19. 06. 2018, 11:45:49 »

Když to takhle uděláš, tak se e-mail pošle pokaždé, což určitě nechceme.
neposle, ved v tom awk je podmienka, dalej prejdu len riadky s $5>90

Prázdný string je také string, mailx pošle prázdnou zprávu. To nechceš.
ziadny prazdny string sa netlaci, ak $5<=90 tak awk neurobi vobec nic, netlacia sia prazdne riadky, proste dalej prechadzaju len riadky ktore maju $5>90

Kit

Re:Shell script error
« Odpověď #21 kdy: 19. 06. 2018, 11:49:58 »
ziadny prazdny string sa netlaci, ak $5<=90 tak awk neurobi vobec nic, netlacia sia prazdne riadky, proste dalej prechadzaju len riadky ktore maju $5>90

Teď jsem to zkusil, při nesplnění podmínky se pošle prázdný e-mail.

erik80

Re:Shell script error
« Odpověď #22 kdy: 19. 06. 2018, 11:51:49 »
ziadny prazdny string sa netlaci, ak $5<=90 tak awk neurobi vobec nic, netlacia sia prazdne riadky, proste dalej prechadzaju len riadky ktore maju $5>90

Teď jsem to zkusil, při nesplnění podmínky se pošle prázdný e-mail.

erik@E5570:~$ df | tr -d '%' | wc -l
21
erik@E5570:~$ df | tr -d '%' | awk '{if ($6>90) print}' | wc -l
10

Kit

Re:Shell script error
« Odpověď #23 kdy: 19. 06. 2018, 11:59:05 »
erik@E5570:~$ df | tr -d '%' | wc -l
21
erik@E5570:~$ df | tr -d '%' | awk '{if ($6>90) print}' | wc -l
10

K čemu tam máš to zbytečné "tr"? Tímto příkazem se vždy odešle minimálně jeden řádek. Jenže e-mail chceme poslat pouze v případě, když je na některém oddílu překročena kvóta. Jinak nesmí být odeslán ani prázdný string.

FAT32

Re:Shell script error
« Odpověď #24 kdy: 19. 06. 2018, 12:00:13 »
Kód: [Vybrat]
./disk_check.sh[2]: ^M:  not found.
./disk_check.sh[3]: Syntax error at line 6 : `done' is not expected.

To vypadá, jako kdybys měl dosovský konec řádku. Zkus hexdump.
To HP-UX bohužel neumí a instalace by si vyžádala žádost, která se vyřídí až za týden :))

Kit

Re:Shell script error
« Odpověď #25 kdy: 19. 06. 2018, 12:05:20 »
Kód: [Vybrat]
./disk_check.sh[2]: ^M:  not found.
./disk_check.sh[3]: Syntax error at line 6 : `done' is not expected.

To vypadá, jako kdybys měl dosovský konec řádku. Zkus hexdump.
To HP-UX bohužel neumí a instalace by si vyžádala žádost, která se vyřídí až za týden :))

No tak ten konec druhého řádku oprav nějakým editorem. Třeba do toho vrtal někdo s NotePadem :D

Kit

Re:Shell script error
« Odpověď #26 kdy: 19. 06. 2018, 12:12:00 »
To vypadá, jako kdybys měl dosovský konec řádku. Zkus hexdump.
To HP-UX bohužel neumí a instalace by si vyžádala žádost, která se vyřídí až za týden :))

Primitivní hexdump si napíšeš i v tom awk, určitě se ti bude hodit někdy později.

Ve Vimu však dosovské řádky uvidíš na první pohled.

FAT32

Re:Shell script error
« Odpověď #27 kdy: 19. 06. 2018, 12:26:11 »
Nakonec sem to smazal a vložil znovu ve vim, asi to někdo dělal skutečně v nějakém texťáku ve winu :)

Teď už jen zbejvá zjístit, proč to emaily nepošle. Vidím to na nefunkční mailx. Každopádně děkuji za rady, pomohly :)

Kit

Re:Shell script error
« Odpověď #28 kdy: 19. 06. 2018, 12:37:30 »
Nakonec sem to smazal a vložil znovu ve vim, asi to někdo dělal skutečně v nějakém texťáku ve winu :)

Teď už jen zbejvá zjístit, proč to emaily nepošle. Vidím to na nefunkční mailx. Každopádně děkuji za rady, pomohly :)

Zkus, jestli tam ten mailx vůbec máš - ať víš, že si máš poslat žádost, která bude vyřízena za týden :)

erik80

Re:Shell script error
« Odpověď #29 kdy: 19. 06. 2018, 12:51:09 »
erik@E5570:~$ df | tr -d '%' | wc -l
21
erik@E5570:~$ df | tr -d '%' | awk '{if ($6>90) print}' | wc -l
10

K čemu tam máš to zbytečné "tr"? Tímto příkazem se vždy odešle minimálně jeden řádek. Jenže e-mail chceme poslat pouze v případě, když je na některém oddílu překročena kvóta. Jinak nesmí být odeslán ani prázdný string.

aby som zmazal nalepene % za cislom aby awk mohol pracovat s $6 ako s cislom.
ziaden riadok sa neodosle, vobec si to neskusal