Press "Enter" to skip to content

Efekty dzisiejszej/wczorajszej nauki

Uczę się basha. I tak postanowiłam sprawdzić swoje umiejętności, zamknąć wszystkie notatki i materiały, zamknąć przeglądarkę, by google/bing nie kusił(o) no i zaczęłam pisać. Nie obyło się bez problemów. Wcięło mi thena w jednej linijce po ifie i szukałam błędu jak głupia przy fi :ppp (dzięki Nikow za sprowadzenie mnie na ziemię z tym)
Skrypcik wygląda następująco i działa;)

Kod na licencji „a rób z tym co chcesz”

#!/bin/bash

#Ten skrypt sprawdza ile userów korzysta z następujących powłok (bash, sh, false)
#i dlaczego aż tylu z /bin/sh :p
#Skrypt nie wymaga od ciebie mocy skurwyadmina do wykonania.

#Zacznijmy od helpa. Jakby komuś nie chciało się kodu czytać.
if [ "$1" = "--help" ]
then
	echo "Skrypt wyświetla ilu userów korzysta z danej powłoki";
	echo "wywołanie: $0 <plik>";
	echo "jak podasz plik, to ci wrzuci w raport o tej nazwie (appendem)";
	exit 0
fi

plik=/etc/passwd
#zmienne przechowujące ilość userów (w tym specjalnych) danej powłoki
count_bash=0
count_sh=0
count_false=0
counter=0
#możesz pododawać kolejne zmienne analogicznie
userzy=`cat $plik |cut -f 7 -d:` #bo na 7 pozycji jest shell w pliku

for shell in $userzy
do
	let counter+=1
	if [ "$shell" = "/bin/bash" ]
	then
		let count_bash+=1
	fi

	if [ "$shell" = "/bin/sh" ]
	then
		let count_sh+=1
	fi

	if [ "$shell" = "/bin/false" ]
	then
		let count_false+=1
	fi
	#Możesz dopisywać kolejne powłoki, o ile im zmienną machnąłeś
done
echo "masz $counter kont"
echo "Powłoki /bin/bash używa $count_bash kont(o)";
echo "Powłoki /bin/sh używa $count_sh kont(o)";
echo "Powłoki /bin/false używa $count_sh kont(o)";
let suma=count_bash+count_false+count_sh;
let inne=counter-suma;
echo "Innych powłok używa $inne kont(o)"
#Dopisuj kolejne echa, jeśli inne powłoki zliczałeś powyżej

#generowanie raportu 
czas=`date`
if [ $# -ge 1 -a "$1" != "--help" ]
then
	echo " ">>$1
	echo "-----------------------------------------------------------------------">>$1
	echo "Raport programu $0">> $1
	echo "Wygenerowano w $czas">> $1
	echo "ilość kont : $counter">> $1
	echo "Powłoka    : liczba_userów">>$1
	echo "/bin/bash  : $count_bash">>$1
	echo "/bin/sh    : $count_sh">>$1
	echo "/bin/false : $count_false">>$1
	#Podopisuj pozostałe jeśli potrzebujesz
	echo "Inne       : $inne">>$1
	echo "-----------------------------------------------------------------------">>$1
	echo " ">>$1
fi

Może się komuś przyda.’

Uczyłam się jeszcze angielskiego dzisiaj, ale tego wklejać już nie będę, bo mniej ciekawe;)

Tyle ode mnie.  Tak mnie natchnęło jakoś

 

6 komentarzy

  1. Od razu przypomniały mi się zajęcia z systemów op 2, podobne skrypty pisaliśmy 🙂

    • piatkosia piatkosia

      No to będę miała 1 skrypt do przodu, tylko sobie zerżnę i podmienię co trza;)

  2. Po co aż 70 lini?

    cat /etc/passwd | cut -f 7 -d: | sort | uniq -c | sort -nr | awk {’print „Powloki: ” $2 ” uzywa ” $1 ” kont(o)”’}

    Poćwicz i pozdro:)

    • adminka adminka

      A pewnie że można. Ale chodziło mi o wykorzystanie jak największej ilości konstrukcji, dla utrwalenia jak tworzenie zmiennych, sprawdzanie warunków, wrzucenie zawartości pliku do zmiennej i przeparsowanie tego, użycie pętli, wykonywanie obliczeń matematycznych, wypisywanie wyników itd. Takie jak powyżej, to mieliśmy chyba w technikum na zajęciach z systemów;)
      Nie chodziło mi o minimalizację zapisu, wręcz przeciwnie, szukałam, jak jeszcze go rozwlec i czego by tu jeszcze użyć:)

      Pozdrawiam.

  3. Stefan Stefan

    A ja mam z kolei takie pytanie: jak się nazywa plugin, w którym przedstawiasz kody źródłowe?

    btw. pozdrawiam kodującą niewiastę 😉 bardzo rzadki widok.. jak jednorożec 😛

    • adminka adminka

      A jasne, że powiem. Syntax Highlighter ComPress. Pełna dokumentacja http://alexgorbatchev.com/SyntaxHighlighter/manual . Na początku, jak tym wstawisz kod, jest szary i brzydki, ale wystarczy w tym <pre> dać <pre class=”brush:bash; collapse: true> lub <pre class=”brush:cpp; collapse: true> i nabiera kolorków;) jak się da collapse:false to rozwinie kod, ale bywa on czasami długi, a mam również nietechnicznych czytelników i nie chcę ich przerazić;) Pozdrawiam.
      edit: ups, zapomniałam że zezwoliłam na użycie htmlów tutaj i pojawił się expand source;) Już poprawiłam

Comments are closed.