1. Napisz skrypt, który co 10 sekund wyświetla na konsoli aktualną datę, godzinę i ilość użytkowników w historii programu who. Program ma zatrzymywać się tylko wtedy, gdy w katalogu programu znajdzie się plik o nazwie STOP. Przed zatrzymaniem program ma skasować plik STOP. Uruchom program odsyłając go do tła i zatrzymaj "dotykając" pliku STOP.
2. Napisz skrypt, który wchodzi do każdego podkatalogu release1, release2, release3 ... release9 (w katalogu roboczym), a następnie dodaje zawartość podfolderu "doc" do archiwum doc1.tar, doc2.tar, doc3.tar, ... doc9.tar, archiwa lokując w katalogu roboczym (tam, gdzie foldery release...). Uwzględnij sytuację, gdy katalogu releaseX nie ma.
3. Napisz program, który przekształci wszystkie pliki .gif z danego katalogu na pliki o takiej samej nazwie, lecz rozszerzeniu (i formacie) .png. Pamiętaj o usunięciu rozszerzenia .gif z nazwy. Rozszerzenie od nazwy oddziela kropka, zakładamy, że w nazwie nie ma innej kropki. Do konwersji użyj programu convert plik.gif plik.png.
4. Napisz program "del.sh", który przyjmuje w argumencie dowolną ilość plików. Pliki te przenoszone są do podfolderu ~/kosz/[data uruchomienia programu]. Uwzględnij przypadek gdy folder ~/kosz w ogóle nie istnieje. Datę pozyskaj poleceniem date '+%Y%m%d%H%M%S'. Po przeniesieniu wyświetl ilość przeniesionych plików.
5. Napisz program przyjmujący w parametrach dwie liczby całkowite (pierwsza<druga). Program wyświetla wpisy użytkowników z /etc/passwd o numerach ID (w pliku przechowywane w postaci ...x:ID:...) z przedziału zadanego tymi liczbami. Uwzględnij przypadek gdy użytkownik poda nieprawidłowe parametry.
6. Napisz skrypt, który sprawdzi, czy w komputerze występuje karta sieci bezprzewodowej (Wi-fi). Można to stwierdzić kodem błedu 0 dla polecenia ifconfig wlan0. Jeżeli występuje, uruchom program wicd w tle i zakończ skrypt (oczekujemy, że komputer podłączy się po Wi-fi). W przeciwnym przypadku sprawdź, czy komunikat wyjściowy polecenia ifconfig hme0 (hme0 - karta sieci przewodowej) zawiera słowo RUNNING. Jeżeli nie zawiera, wyświetl użytkownikowi komunikat o braku sieci i zakończ skrypt.
Odpowiedzi u dołu strony (co nie oznacza, że to jedyne rozwiązania).
Odpowiedzi:
Zadanie 1.
#!/bin/bash
while true
do
echo `date` bylo zalogowanych: `who -a | wc -l`
sleep 10
if [ -e ./STOP ]
then
rm ./STOP
exit
fi
done
#!/bin/bash
x=0
while [ $x -lt 10 ]
do
x=`expr $x + 1`
if [ ! -d release$x ]
then
continue
fi
cd release$x
tar cvf ./../doc$x.tar ./doc/*.*
cd ..
done
#!/bin/bash
for plik in *.gif; do
png=`echo $plik | cut -d '.' -f 1`.png
convert $plik $png
rm $plik
done
#!/bin/bash
if [ ! -d ~/kosz ]; then
mkdir ~/kosz
fi
date=`date '+%Y%m%d%H%M%S'`
mkdir ~/kosz/$date
k=0
for par in $*; do
mv $par ~/kosz/$date/
k=`expr $k + 1`
done
echo "Przeniesiono plikow: $k"
#!/bin/bash
if [ $1 -gt $2 ]; then
echo "Error!"
exit
fi
n=$1
while [ $n -le $2 ]; do
grep "x:$n:" /etc/passwd
n=`expr $n + 1`
done
#!/bin/bash
if ifconfig wlan0 >/dev/null 2>&1; then
wicd &
exit
else
if [ -z "`ifconfig hme0 | grep RUNNING`" ]; then
echo "Uwaga: Brak lacznosci na hme0"
exit
fi
fi
# w linii 2 >/dev/null 2>&1 nie musi występować - to dla kosmetyki (nie wyświetlają się błędy).