Portál AbcLinuxu, 5. května 2025 21:57

Dotaz: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích

18.3.2010 12:14 RYU.cz | skóre: 16 | Vsetín
Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
Přečteno: 467×
Odpovědět | Admin
Zdravím, mám dva dotazy:

pokud si vypisuju zatížení CPU pomocí příkazu

env LANG=C top -n 1 | grep Cpu | awk '{print$2}'

tak dostanu výsledek například "14.4%us," hezké, ale MRTG se to už nelíbí a proto potřebuju nějak vytáhnout pouze tu část před znakem "%". Pokud vím ,mělo by to jít přes parametry awk, ale z manpages nejsem vůbec chytrý.

Druhá věc:

Pokud se přihlásí user přes SSH, jsou jeho příkazy hezky v bashhistory, takže vím kdo co dělal, pokud ale některý použije sudo -i, nebo sudo su, tak se sice příkazy logují do BH roota, ale už nepoznám kdo co dělal. Nešlo by to nějak logovat nezávisle na bashhistory a na sudu ? něco jako:
@12:54 - 12.03.2010 user anton did:       ping seznam.cz
@12:55 - 12.03.2010 user anton did:       sudo -i
@12:55 - 12.03.2010 user anton(root) did: ping -f seznam.cz
Neptejte se prosím, proč má na jedné mašině roota víc lidí, nesouvisí to s tématem.

Vím že když bude uživatel root, může udělat cokoliv, včetně mazání tohoto logu, z toho však strach nemám, jde spíš o to aby se udržel přehled, popřípadě, když se neco zmrví, tak ať se ví na koho řvát.
Linux is like a teepee - no windows, no gates, apache inside. | RYU.cz

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.3.2010 12:24 pepazdepa
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
Odpovědět | | Sbalit | Link | Blokovat | Admin
env LANG=C top -n 1 | awk '/cpu/ { substr(/us/,"") ; print$2 }'

??
18.3.2010 12:43 RYU.cz | skóre: 16 | Vsetín
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
env LANG=C top -n 1 | awk '/cpu/ { substr(/us/,"") ; print$2 }' bohužel nic nevrací
Linux is like a teepee - no windows, no gates, apache inside. | RYU.cz
18.3.2010 14:22 fsfsf
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
env LANG=C top -n 1 | awk -F '%' '{ if( /^Cpu/ ) print $1; }'
18.3.2010 15:09 Já
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
env LANG=C top -n 1 -b | sed -ne 's/^Cpu[^0-9]*\([0-9.]\+\)[^0-9].*/\1/p'
18.3.2010 15:58 pepazdepa
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
pardon, moje chyba
env LANG=C top -n 1 | awk '/^Cpu/ { sub(/us\,/,"",$2) ; print $2 }'                                                                                                                                  
22.0%
substr je pro pocitani delky retezce :(
18.3.2010 12:28 pepazdepa
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
Odpovědět | | Sbalit | Link | Blokovat | Admin
nastav si spravne sudoers, a pozor, napriklad se da vyskocit z vi/ftp atp pokud to spravne nenastavis.... sudo muze logovat do syslogu, tam to muzes parsovat treba pres swatch atp...

jinak jestli nekdo muze udelat sudo su - nebo vyskocit z sudo vi /tmp/foobar tak rovnout muzes na vsechno logovani zapomenou, zbytecny boj.

hehe v praci vyskakuji pres vi/ftp casto ;) holt kdyz me nechteji dat roota primo :)
18.3.2010 12:45 RYU.cz | skóre: 16 | Vsetín
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
a nedá se logovat IP a příkaz ? podle toho bych taky poznal kdo ... počítám s tím, že jediný přístup bude přes ssh
Linux is like a teepee - no windows, no gates, apache inside. | RYU.cz
18.3.2010 14:05 pepazdepa
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
no to by byl hack ;)

po prihlaseni press ssh se uzivateli v shellu delaji promenne SSH*...

podle me to je security by obsurity, lepsi je man last a muzes logovat prihlaseni snad pres syslog nebo do nejake databaze, muzes i sudo prikazy logovat, takze najdes (snad) spojeni mezi prihlasenym uzivatelem a sudo prikazem.

mozna by sis mel nejdriv nastudovat unix, pak nastudovat jiz uvedene logovaci reseni, a pak se zabyvat designem. a ne mit kopec prani: chci logovat to, ono, tamto...
Tarmaq avatar 18.3.2010 17:39 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pro priste - doporucuji psat kazdy dotaz zvlast, potencialni radsi nebudou zmateni, navic se lepe pozna ktera z otazek byla vyresena.
env LANG=C top -n 1 | grep Cpu | awk '{print$2}' | sed 's/%.*//'
Don't panic!
18.3.2010 22:32 pepazdepa
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
ja bych to prohnal jeste vice rourama :D cim vic, tim lip.
Řešení 1× (RYU.cz (tazatel))
Tarmaq avatar 19.3.2010 10:49 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
pridal jsem k autorovu prikazu akorat ten sed, neresil jsem jestli se ke stejnemu vysledku muze dobrat jinou cestou, jen jsem ukazal jak se zbavit tech procent za tim.. Prikazy vyse (vcetne tvych) nevracely co autor pozadoval. Vykonostne tam neni skoro zadny rozdil proti verzi s awk. Nicmene uznavam ze moje reseni neni idealni. Urcite se najde neco jako:
$ mpstat | grep all | awk '{print $4}'
Don't panic!
19.3.2010 10:55 RYU.cz | skóre: 16 | Vsetín
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
DELL pe1750 dvakrát Xeon si nějákých pěti procesů nevšimne :-D ... přesnost bych řešil tak v řádech jednotek procent ... problém je, že to stále nejede :-(
Linux is like a teepee - no windows, no gates, apache inside. | RYU.cz
19.3.2010 11:38 Lol Phirae | skóre: 23
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
LANG=C idle=$(top -n 2 | grep "Cpu(s)" | tail -n 1 | awk {' print $8 '} | cut -f 1 -d .); usage=$(( 100 - $idle )); echo $idle $usage 0 100 Nevim, me to funguje... :-)
kouby avatar 18.3.2010 22:48 kouby | skóre: 27 | blog: init | Praha
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
Radsi spustime 5 procesu nez 3. Cim vice tim lepe, pekne tomu systemu nalozime, jen at se neflaka.. :)
That's thirty minutes away. I'll be there in ten.
18.3.2010 22:50 Lol Phirae | skóre: 23
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
Jeste by se tam urcite zamontovat nejaky zbytecny cat... :-D
18.3.2010 22:04 RYU.cz | skóre: 16 | Vsetín
Rozbalit Rozbalit vše Re: Dělení stringu v bashi (grep,awk) Logování sudo -i při více uživatelích
Odpovědět | | Sbalit | Link | Blokovat | Admin
hmm, super, díky za to co jste mi tu psali, jsou to funkční řešení, která vracejí správný výsledek ... teď se ale pro změnu MRTG rozhodlo, že co fungovalo doteď už fungovat nebude a prohlásí, že to co dostává není číslo.
Linux is like a teepee - no windows, no gates, apache inside. | RYU.cz

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.