Shell script error

FAT32

Re:Shell script error
« Odpověď #30 kdy: 19. 06. 2018, 12:56:01 »
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 :)

Je tam, ale nějak rozbity, má v sobě quote asi 900 mailů, asi sem našel kostlivce ve skříni :)


Kit

Re:Shell script error
« Odpověď #31 kdy: 19. 06. 2018, 13:47:57 »
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

AWK s tím $5 bude pracovat jako s číslem, ten znak "%" mu nevadí. I kdyby, tak to snadno ošetříš přímo v awk.

Když místo "wc -l" dáš "mailx", tak odešle.

erik80

Re:Shell script error
« Odpověď #32 kdy: 19. 06. 2018, 15:12:06 »
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

AWK s tím $5 bude pracovat jako s číslem, ten znak "%" mu nevadí. I kdyby, tak to snadno ošetříš přímo v awk.

Když místo "wc -l" dáš "mailx", tak odešle.

ty musis byt nejaky troll:
erik@E5570:~$ df | tr -d '%' | awk '{if ($6>90) print}' | wc -l
10
erik@E5570:~$ df | awk '{if ($6>90) print}' | wc -l
1
navyse existuje (aj ked neviem od akej verzie):
-E      Don't send messages with an empty body.

Kit

Re:Shell script error
« Odpověď #33 kdy: 19. 06. 2018, 15:35:29 »
ty musis byt nejaky troll:
erik@E5570:~$ df | tr -d '%' | awk '{if ($6>90) print}' | wc -l
10
erik@E5570:~$ df | awk '{if ($6>90) print}' | wc -l
1
navyse existuje (aj ked neviem od akej verzie):
-E      Don't send messages with an empty body.

Výsledek "1" značí, že na výstupu máš alespoň jeden řádek. Zkus odstranit "| wc -l" a uvidíš ho. Hodnota se nenachází v $6, ale v $5, proto ti to vyhazuje různé výsledky.

erik80

Re:Shell script error
« Odpověď #34 kdy: 19. 06. 2018, 16:06:56 »
ty musis byt nejaky troll:
erik@E5570:~$ df | tr -d '%' | awk '{if ($6>90) print}' | wc -l
10
erik@E5570:~$ df | awk '{if ($6>90) print}' | wc -l
1
navyse existuje (aj ked neviem od akej verzie):
-E      Don't send messages with an empty body.

Výsledek "1" značí, že na výstupu máš alespoň jeden řádek. Zkus odstranit "| wc -l" a uvidíš ho. Hodnota se nenachází v $6, ale v $5, proto ti to vyhazuje různé výsledky.

erik@E5570:~$ df | tr -d '%' | awk '{if ($6>90) print}'
Filesystem                   Type      Size  Used Avail Use Mounted on
/dev/loop0                   squashfs  198M  198M     0 100 /snap/vlc/365
/dev/loop1                   squashfs   87M   87M     0 100 /snap/core/4486
/dev/loop4                   squashfs   87M   87M     0 100 /snap/core/4571
/dev/loop2                   squashfs  104M  104M     0 100 /snap/pac-vs/1
/dev/loop3                   squashfs   91M   91M     0 100 /snap/tusk/12
/dev/loop5                   squashfs   93M   93M     0 100 /snap/tusk/15
/dev/loop6                   squashfs  181M  181M     0 100 /snap/vlc/190
/dev/loop7                   squashfs   87M   87M     0 100 /snap/core/4650
/dev/loop8                   squashfs  103M  103M     0 100 /snap/tusk/16
erik@E5570:~$ df | awk '{if ($6>90) print}'
Filesystem                   Type      Size  Used Avail Use% Mounted on


Ravise

  • ***
  • 113
    • Zobrazit profil
    • E-mail
Re:Shell script error
« Odpověď #35 kdy: 19. 06. 2018, 16:25:44 »
Zdá se že máš jiný df než my - já mám df (GNU coreutils) 8.28 a zaplnění je v $5

Kód: [Vybrat]
$ LANG=C df | awk '{if ($5>50) print}'
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda2      209715696 137891940  71823756  66% /w10
/dev/sda7      119172348  86689888  26405788  77% /home
$ LANG=C df | awk '{if ($6>50) print}'
Filesystem     1K-blocks      Used Available Use% Mounted on

Chování mám totožné, ať už % ruším nebo ne
Kód: [Vybrat]
$ LANG=C df | tr -d '%' | awk '{if ($6>50) print}'
Filesystem     1K-blocks      Used Available Use Mounted on
$ LANG=C df | tr -d '%' | awk '{if ($5>50) print}'
Filesystem     1K-blocks      Used Available Use Mounted on
/dev/sda2      209715696 137891940  71823756  66 /w10
/dev/sda7      119172348  86689924  26405752  77 /home

Kit

Re:Shell script error
« Odpověď #36 kdy: 19. 06. 2018, 16:40:52 »
ty musis byt nejaky troll:
erik@E5570:~$ df | tr -d '%' | awk '{if ($6>90) print}' | wc -l
10
erik@E5570:~$ df | awk '{if ($6>90) print}' | wc -l
1
navyse existuje (aj ked neviem od akej verzie):
-E      Don't send messages with an empty body.

Výsledek "1" značí, že na výstupu máš alespoň jeden řádek. Zkus odstranit "| wc -l" a uvidíš ho. Hodnota se nenachází v $6, ale v $5, proto ti to vyhazuje různé výsledky.

erik@E5570:~$ df | tr -d '%' | awk '{if ($6>90) print}'
Filesystem                   Type      Size  Used Avail Use Mounted on
/dev/loop0                   squashfs  198M  198M     0 100 /snap/vlc/365
/dev/loop1                   squashfs   87M   87M     0 100 /snap/core/4486
/dev/loop4                   squashfs   87M   87M     0 100 /snap/core/4571
/dev/loop2                   squashfs  104M  104M     0 100 /snap/pac-vs/1
/dev/loop3                   squashfs   91M   91M     0 100 /snap/tusk/12
/dev/loop5                   squashfs   93M   93M     0 100 /snap/tusk/15
/dev/loop6                   squashfs  181M  181M     0 100 /snap/vlc/190
/dev/loop7                   squashfs   87M   87M     0 100 /snap/core/4650
/dev/loop8                   squashfs  103M  103M     0 100 /snap/tusk/16
erik@E5570:~$ df | awk '{if ($6>90) print}'
Filesystem                   Type      Size  Used Avail Use% Mounted on

Jak se ti tam dostal sloupec "Type"? Ten ve standardním výstupu df není a vypisuje se pouze s parametrem "-T".

Druhý výstup jsou hlavičky, které jsou také textem a které se tím e-mailem odešlou. Ovšem to jsme už vyřešili regulárem výše. Když to také odfiltruješ, tak ti vyleze na stdout prázdný string.

Zřejmě používáš jiné awk. V mém případě je to gawk, kterému ta procenta za číslem nevadí.

Kit

Re:Shell script error
« Odpověď #37 kdy: 19. 06. 2018, 16:46:48 »
Zdá se že máš jiný df než my - já mám df (GNU coreutils) 8.28 a zaplnění je v $5

Záleží na tom, jak má nastavený alias. Mám to takhle:
Kód: [Vybrat]
alias df='LANG=POSIX df'
Stačí jen přidat parametr, a hned je to v jiném sloupci:
Kód: [Vybrat]
alias df='LANG=POSIX df -T'

Ravise

  • ***
  • 113
    • Zobrazit profil
    • E-mail
Re:Shell script error
« Odpověď #38 kdy: 19. 06. 2018, 20:39:50 »
Jo, parametr, to mě mohlo napadnout :)