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
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`
chmod 644 $a
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)
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"
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
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
for a in `find . -name "*.php3" -or -name "*.php"`
cp $a /tmp/pliki/zadania/kopia/
cd /tmp/pliki/zadania/kopia/
for b in `ls *.php*`
mv $b `echo $b`s
echo $b
Z="php3 php"
mkdir kopia
or i in $Z
PLIKI=`find ./ -iname "*.$i"`
for j in $PLIKI
NAZWA=`basename "$j" ".$i"`
cp "$j" "kopia/$NAZWA.phps"
echo "$PLIKI"
26. Na podstawie polecenia ps wyświetlić zestawienie:
- procesy ze statusem X - sztuk Y
- lista tych procesów...
- procesy ze statusem X2 - sztuk Y2
- ...
PROCESY=`ps ax | grep -v "PID"`
STATY=`echo "$PROCESY" | awk '{print $3}' | sort | uniq`
for i in $STATY
LICZBA=`echo "$PROCESY" | grep " $i " | wc -l`
PR=`echo "$PROCESY" | grep " $i " | awk '{print $5}' | sort | uniq `
echo "STAT: $i LICZBA: $LICZBA"
echo "$PR"
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
!/bin/sh
WHO=`who`
IPS=`echo "$WHO" | awk '{ print $5 }' | sed -e 's/(//' | sed -e 's/)//' | sort | uniq`
for i in $IPS
ILOSC=`echo "$WHO" | grep "$i" | wc -l`
USERS=`echo "$WHO" | grep "$i" | awk '{ print $1 }'`
echo "Siec: $i - ilosc: $ILOSC - lista:"
echo "$USERS"
28. Napisać skrypt, który jeżeli suma maili w kolejce przekroczy 1MB, to wyśle do administratora maila z informacją
MAILE=`mailq | grep '^[a-zA-Z0-9]'`
WIELKOSC=`echo "$MAILE" | awk 'BEGIN { suma = 0 } { suma += $2 } END { print suma }'`
if [ "$WIELKOSC" -gt 1048576 ]
echo "wiadomosc" | mail -s "TEMAT" root@wsi.edu.pl
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ę
if [ -e k.conf ]
. k.conf
echo "Brak pliku konfiguracyjnego."
exit
for KATALOG in $(echo "$KATALOGI" | sed -e 's/\;/\ /')
echo "[+] Przetwarzam $KATALOG"
echo "[=] Liczba plikow: `eval ls -lR $KATALOG | grep '^-' | wc -l`"
echo "[=] Zajmowane miejsce: `eval du -sh $KATALOG | awk '{ print $1 }'`"
echo ""
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 ]
echo "[+] Archiwum zostalo utworzone: `eval echo $KOPIA`/`date '+%d-%m-%Y'`.tar"
echo "[-] Blad przy tworzeniu archiwum."
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
rav022