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
Od razu przypomniały mi się zajęcia z systemów op 2, podobne skrypty pisaliśmy 🙂
No to będę miała 1 skrypt do przodu, tylko sobie zerżnę i podmienię co trza;)
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:)
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.
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 😛
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.