[+] Skrypty bash i procesy

Potrzebujesz pomocy z C, C++, perl, python, itp.
Rady
Posty: 87
Rejestracja: 20 kwietnia 2007, 11:57

[+] Skrypty bash i procesy

Post autor: Rady »

Piszę sobie skrypt do obsługi serwera Samby już prawie gotowy tylko zostało mi jeszcze jedno zagadnienie do rozwiązania, a mianowicie wylogowanie użytkownika z serwera. Koncepcja wygląda tak...

Przy pomocy poleceń:

Kod: Zaznacz cały

kill i smbpasswd -d nazwa_użytkownika 
wylogowuję użytkownika ,,nazwa_użytkownika'' i zabraniam mu dostępu do serwera ale potrzebuje dla:

Kod: Zaznacz cały

kill
przekazać jego: procesu.

I tu problem, polecenie:

Kod: Zaznacz cały

smbstatus -p > plik
zapisuje mi do pliku takie informacje:

Kod: Zaznacz cały

PID     Username      Group       Machine                        
-------------------------------------------------------------------
3329   user1         smbuser       xp1           (192.168.0.2)
4348   user2         smbuser       xp2           (192.168.0.3)
5359   user3         smbuser       xp3           (192.168.0.4)
8367   user4         smbuser       xp4           (192.168.0.5)
9423   user5         smbuser       xp5           (192.168.0.6)
Jak z tego pliku wyodrębnić tylko numery PID wszystkich użytkowników?
Gość

Re: Skrypty bash i procesy

Post autor: Gość »

Rady pisze:Jak z tego pliku wyodrębnić tylko numery PID wszystkich użytkowników ?
Tak :

Kod: Zaznacz cały

sed '/^[[:digit:]]/!d]


Pozdrawiam
Rady
Posty: 87
Rejestracja: 20 kwietnia 2007, 11:57

Post autor: Rady »

Wielkie podziękowania, działa. A czy mógłbym prosić o wytłumaczenie tego wężyka (lub link do jakiegoś fajnego artykułu na ten temat).
Gość

Post autor: Gość »

Rady pisze:Wielkie podziękowania, działa, a czy mógłbym prosić o wytłumaczenie tego wężyka
Dobrze - no to po kolei...

Kod: Zaznacz cały

sed '/^[[:digit:]]/!d]
[b]sed[/b]  - plik zostanie poddany obróbce z użyciem seda
[b]^[[:digit:]][/b]  - znajdź wszystkie linie zaczynające się od cyfry
[b]!d[/b]  - usuń wszystko pozostałe, czyli:
[code]/^[[:digit:]]/!d
oznacza: usuń wszystko prócz linii zaczynających się od cyfry

s/// - podmień wyrażenie regularne podane między pierwszym / i drugim / na to podane między drugim / a trzecim /, czyli:

Kod: Zaznacz cały

s/\ .*//
oznacza:
usuń wszystko od pierwszej spacji do końca linii

Całość:

Kod: Zaznacz cały

sed '/^[[:digit:]]/!d;s/\ .*//'  /ścieżka/do/pliku
z pliku /ścieżka/do/pliku usuń wszystko prócz linii zaczynających się od cyfry, a następnie z pozostałych linii usuń wszystko od pierwszej spacji do końca linii.

Szczegóły:

Kod: Zaznacz cały

man sed
Pozdrawiam.
Rady
Posty: 87
Rejestracja: 20 kwietnia 2007, 11:57

Post autor: Rady »

Dziękuję. A pod tymi adresami:

Sed w przykładach, część pierwsza
Sed w przykładach, część druga
Sed w przykładach, część trzecia

znalazłem fajny opis dla Seda lepszy i bardziej zrozumiały niż ten przedstawiony w

Kod: Zaznacz cały

man sed
ODPOWIEDZ