unixallwhatwasonlab.doc

(49 KB) Pobierz
1

1. Stworzyć katalog o nazwie składającej się słowa kopia oraz bieżącego roku i miesiąca

mkdir "kopia- `date +%y%m%d`"

2. Wyświetlić tekst: w aktualnym katalogu jest X plików php, gdzie X będzie wyznaczona na podstawie polecenia ls

echo 'jest plikow' `ls *.php | wc -l`

3. W pliku skan.txt zapisać listę tylko nazw plików w kolejności od największego.

ls -l | sort -nr > scan.txt

4. Przy pomocy edytora pico stworzyć plik pliki_do_skopiowania.txt z nazwami plików i katalogów do zrobienia kopi. Napisać polecenie, które skopiuje wszystkie pozycje z pliku pliki_do_skopiowania.txt do katalogu kopie

cp -R `cat pliki_do_skopiowania.txt` kopia-\ 071002/

5. Wyswietlic liste tylko adresow email (bez MAILER-DAEMON) wysylajacych poczte w kolejnosci od tego co najwiecej wysyla maili. Skorzystac z mailq.

mailq | grep @ | sort | uniq -c

6. Wyswietlic imie i nazwisko osob pracujacych z siec.wsi na podstawie finger

finger | grep siec.wsi | awk '{ print $2,$3 }'

7. Na podstawie pliku /proc/cpuinfo wyswietlic nazwe procesora serwera

cat /proc/cpuinfo | grep "model \name" | cut -d : -f 2

8. Na podstawie pliku /proc/meminfo wyswietlic liczbe zainstalowanej i wolnej pamieci serwera.

cat /proc/meminfo | grep MemTotal && cat /proc/meminfo | grep MemFree

9. Z polecenia uptime wyswietlic obciazenie serwera z ostatnich 15 minut (ostatni par. load average)

uptime | awk '{print $11}'

10. Wyswietlic imiona i nazwiska kont na podstawie polecenia finger lub pliku /etc/passwd

cat /etc/passwd | cut -d : -f 5,6 | cut -d : -f 1

11. Wyswietlic wszystkie linki twarde do zadanego pliku (skorzystac z polecenia find

find . -inum n

n -numer -iwezla szukanego pliku

12. Napisac skrypt, ktory wyswietli liczby podzielne przez 3 mniejsze od 20.

#!/bin/sh

j=1;

while [ $j -le 20 ]; do

for i in $j

do

y=$(echo $i%3 | bc)

case $y in

"0") echo "liczba $i jest podzielna przez 3" ;;

*) echo "" > /dev/null

esac

j=$(($j+1))

done

done

13. Na podstawie polecenia uptime dopisac do pliku load.log wpis DATA-GODZ LOAD_AVERAGE gdzie DATA to aktualna data w formacie DD/MM/RRRR, GODZ to aktualna godzina w formacie HH:MM, LOAD_AVERAGE to ostatni parametr polecenia uptime

a=$(date '+%d/%m/%Y %H:%M') && b=$(uptime | awk '{print$6,$7,$8,$9,$10}') && echo $a $b >>log

14. Na podstawie polecenia "nslookup www.onet.pl" stworzyc plik o nazwie : dane_ADRES_IP.txt gdzie ADRES_IP to adres ip dla www.onet.pl zwrocony przez nslookup

touch dane_`(nslookup www.onet.pl | grep Address | sed -n '2,$p' | awk '{ print $2 }')`.txt

p,m

15. Napisać w vi skrypt wyświetlający na podstawie polecenia 'ps ax' listę występujących statusów (kolumna stat) wraz z liczbą procesów posiadających ten status. Ustawić kolejność wg najczęściej nwystępujących.

 

16. Napisać w vi skrypt wyświetlający na podstawie polecenia df listę 5-ciu najbardziej zajętych systemów plików w formacie: procent użycia nazwa systemu plików

df |awk ‘{print $5 „” $L} ‘ |sort –nr |head –n5

17. Napisać w vi skrypt, który na podstawie polecenia du wyświetli listę 3 najwięcej zajmujących podkatalogów katalogu głównego. Nie wyświetlać podkatalogów!

du/-- max –depth=1 |sort –nr |head –n3

18. Napisać skrypt, który wyświetli 10 największych skrzynek pocztowych użytkowników zaczynających się na 'si'. Skrzynki to pliki w katalogu /var/spool/mail

ls /var/sped/ mail /si* -lsn |grep „[^-] „ |head

19. Napisać skrypt, który na podstawie plików /etc/group oraz /etc/passwd wyświetli nazwiska i imiona osób należących do grupy rok20053

ID =` cat /etc /group  |grep „^2053”| awk –F ‘i’ ‘{print $3}’`

20. Napisać skrypt w vi, który wszystkim plikom *.txt z wszystkich podkatalogów nada uprawnienia rw-r--r--

#!/bin/bash

cd /tmp/pliki/zadania

for a in `find . -name "*.txt" -print`

do

chmod 644 $a

done

21. Na podstawie polecenia mailq wyświetlić liczbę maili w kolejce oraz ile miejsca zajmują. Dołączyć również informacje o mailach od MAILER-DAEMON

mailq |grep ‘^[a-z A-Z 0-9]”|awk ‘BEGIN              {SUMA=0} {SUMA+=$2}

END {print „suma : „suma”}’

22. Napisac skrypt, ktory wyswietli 10 najwiekszych skrzynek pocztowych z katalogu /var/spool/mail w formacie

  - konto (??? MB)

#!/bin/sh

ls -l /var/mail | awk '{print "Rozmiar " $5 ," konto "$9}' | sort -k 2 -n -r | head -n 10

23. Stworzyc skrypt, ktory ma wyswietlić ile jest miejsca wolnego na /home/stud, oraz jeżeli miejsca jest więcej niz 50% to wyswietlić tekst "miejsca dużo"

#!/bin/sh

a=$(df -H /home/ | grep % |awk '{print $5}'| cut -d % -f 1)

echo "wolnego miejsca na home jest $a"

if [ $a -le 50 ]

then

echo "malo miejsca"

else

echo " "

fi

24. W pliku uptime.log dopisać aktualne obciążenie serwera z ostatnich 5-ciu minut w zaokrągleniu do 1 miejsca po przecinku

#!/bin/sh

printf "obciazenie aktualne :%.1f\n" `uptime | awk '{print $10}'`>>uptime.log

25. Napisać skrypt, który znajdzie wszystkie pliki z rozszerzeniem php3 i php w podkatalogach i wszystkie te pliki skopiuje do katalogu kopia ze zmianą rozszerzenia na phps

#!/bin/sh

for a in `find . -name "*.php3" -or -name "*.php"`

do

cp $a /tmp/pliki/zadania/kopia/

done

cd /tmp/pliki/zadania/kopia/

for b in `ls *.php*`

do

mv $b `echo $b`s

echo $b

done 

 

#!/bin/bash

Z="php3 php"

mkdir kopia

or i in $Z

do

              PLIKI=`find ./ -iname "*.$i"`

              for j in $PLIKI

              do

                            NAZWA=`basename "$j" ".$i"`

                            cp "$j" "kopia/$NAZWA.phps"

              done

              echo "$PLIKI"

done

26. Na podstawie polecenia ps wyświetlić zestawienie:

  - procesy ze statusem X - sztuk Y

  - lista tych procesów...

  - procesy ze statusem X2 - sztuk Y2

  - lista tych procesów...

  - ...

#!/bin/sh

PROCESY=`ps ax | grep -v "PID"`

STATY=`echo "$PROCESY" | awk '{print $3}' | sort | uniq`

for i in $STATY

do

              LICZBA=`echo "$PROCESY" | grep " $i " | wc -l`

              PR=`echo "$PROCESY" | grep " $i " | awk '{print $5}' | sort | uniq `

              echo "STAT: $i LICZBA: $LICZBA"

              echo "$PR"

done

27. Na podstawie polecenia who wyświetlić zestawienie:

  - adres sieci logowania: X - uzytkowników Y

  - lista tych użytkowników...

  - adres sieci logowania: X2 - uzytkowników Y2

  - lista tych użytkowników...

  - ...

!/bin/sh

WHO=`who`

IPS=`echo "$WHO" | awk '{ print $5 }' | sed -e 's/(//' | sed -e 's/)//' | sort | uniq`

for i in $IPS

do

        ILOSC=`echo "$WHO" | grep "$i" | wc -l`

        USERS=`echo "$WHO" | grep "$i" | awk '{ print $1 }'`

        echo "Siec: $i - ilosc: $ILOSC - lista:"

        echo "$USERS"

done

28. Napisać skrypt, który jeżeli suma maili w kolejce przekroczy 1MB, to wyśle do administratora maila z informacją

#!/bin/sh

 

MAILE=`mailq | grep '^[a-zA-Z0-9]'`

WIELKOSC=`echo "$MAILE" | awk 'BEGIN { suma = 0 } { suma += $2 } END { print suma }'`

if [ "$WIELKOSC" -gt 1048576 ]

then

        echo "wiadomosc" | mail -s "TEMAT" root@wsi.edu.pl

fi

 

cat /etc/passwd | cut –d ‘:’ –f 2,3

cat /etc/passwd | awk –F ‘:’ ‘{ print $1}’

29. Na podstawie pliku konfiguracyjnego o formacie

  - KATALOGI=~/public_html;~/skrypty

  - KOPIA=~/kopia

  - wyświetlić liczbę plików znajdujących się w katalogach oraz ile one zajmują miejsca

  - wykonać kopie wszystkich katalogów w katalogu kopia w pliku o nazwie zawierającej dzisiejszą datę

#!/bin/sh

if [ -e k.conf ]

then

        . k.conf

else

        echo "Brak pliku konfiguracyjnego."

        exit

fi

 

for KATALOG in $(echo "$KATALOGI" | sed -e 's/\;/\ /')

do

        echo "[+] Przetwarzam $KATALOG"

        echo "[=] Liczba plikow: `eval ls -lR $KATALOG | grep '^-' | wc -l`"

        echo "[=] Zajmowane miejsce: `eval du -sh $KATALOG | awk '{ print $1 }'`"

        echo ""

done

 

echo "[+] Tworze kopie zapasowa katalogow: `echo $KATALOGI | sed -e 's/;/, /'`"

mkdir `eval echo $KOPIA` 2> /dev/null

 

A=`echo "$KATALOGI" | sed -e 's/;/ /'`

KOPIE=`eval echo "$A"`

tar -cf `eval echo $KOPIA`/`date '+%d-%m-%Y'`.tar $KOPIE

if [ -a `eval echo $KOPIA`/`date '+%d-%m-%Y'`.tar ]

then

        echo "[+] Archiwum zostalo utworzone: `eval echo $KOPIA`/`date '+%d-%m-%Y'`.tar"

else

        echo "[-] Blad przy tworzeniu archiwum."

fi

30. Napisać skrypt, który dla zalogowanych użytkowników wyświetli listę o strukturze:

  - Konto Imię Nazwisko Katalog_domowy

 

31. Napisać skrypt, który dla podkatalogów bieżącego katalogu wyświetli listę w formacie:

  - Nazwa katalogu, prawa, zajmowane miejsce

...
Zgłoś jeśli naruszono regulamin