HOME


 
Jeżeli ładowanie trwa zbyt długo (powyżej 2 min.), to zapraszam o innej porze.
Zobacz statystyki odwiedzin by ustalić porę najmniejszego obciążenia serwera.

Spakowana witryna o Linuksie w formacie RAR
 
DO_STR_GLOWNEJ_WYSZUKIWARKI
 
 
Shell-skrypty

 

Pobierz spakowaną witrynę gorzow-wlkp.pl/linux

Jeżeli pragniesz poznać Linuksa Mandrake (obecnie Mandriva), to... dobrze trafiłeś. Witryna została zauważona przez twórców magazynu KOMPUTER ŚWIAT 5/2004(141) str. 46 poprzez umieszczenie linku oraz magazynu CHIP 4/2004 (str.114) poprzez umieszczenie artykułu opisującego ten serwis internetowy. Jak na hobbystyczną stronę o Linuksie to miłe ;) Acha... na stronie mandrakelinux.pl/informacje podano też link z opisem cytuję "duży zbiór praktycznych informacji o Mandrake" (mam ją w swoim archiwum - klub.chip.pl/twarogal).

Zapraszam do zadawania pytań na FORUM oraz mailem. Chętnie udzielę (bezpłatnie) odpowiedzi. Oficjalne ceny za jedną poradę na stronie MandrakeSoftPL (mam ją w moim archiwum z dnia 2.05.2004) wahają się od 20 do 350 zł.

 

 

Tematy związane z zarządzaniem:

 

Mając za sobą naukę podstaw obsługi shella poczytaj o tworzeniu samodzielnych skryptów. Pragnę zaznaczyć, że nie jestem autorem większości opisanych poniżej przykładów. Znalazłem je w Internecie, książkach. Zebrałem je w jednym miejscu z czysto praktycznych powodów - by w łatwy sposób móc szybko sobie przypomnieć jakieś zagadnienie.

 


 

Shell czyli interpreter poleceń tekstowych przyjmuje wpisy "z palca" (tzn. bezpośrednio wklepane na klawiaturze i zatwierdzone klawiszem ENTER) oraz odczytuje takie same zlecenia z pliku tekstowego, w którym na samej górze (w pierwszym wierszu) umieszczono tekst: #!/bin/sh (lub jeżeli używasz shella BASH: #!/bin/bash ). Oczywiście taki plik musi mieć prawo do wykonania (rwx), które nadasz zleceniem np. chmod 711 nazwapliku. Więcej o prawach na sąsiedniej stronie.

Skrypt odpalamy na różne sposoby:

  • będąc w katalogu ze skryptem wpisujemy nazwę shella, potem spację i nazwę skryptu, czyli w praktyce:
    sh nazwa_skryptu
    /bin/sh nazwa_skryptu
    /bin/bash nazwa_skryptu
    Uwaga: można tak odpalić skrypt, w którym nie wpisano nagłówka #!/bin/sh
  • będąc w katalogu ze skryptem wpisujemy nazwę skryptu (czasami programy wykonywalne uruchomimy dodając znaczek ./ przed nazwą pliku czyli w praktyce
    ./nazwaskryptu
  • wpisując pełną ścieżkę dostępu (plus nazwę pliku-skryptu) czyli w praktyce:
    /home/antek/nazwaskryptu
  • umieszczając wszystkie skrypty w jednym katalogu np. /home/antek/bin i ustawiając zmienną PATH . Takie rozwiązanie jest najwygodniejsze, gdyż od tej chwili wystarczy wpis nazwaskryptu zatwierdzony klawiszem ENTER.
  • za pomocą crona
  • poprzez umieszczenie w pliku /home/antek/bashrc lub .bash_profile wiersza /home/antek/nazwaskryptu lub ~/nazwaskryptu lub $HOME/nazwaskryptu - w tym przypadku skrypt zostanie odpalony po zalogowaniu. Zapraszam na sąsiednią stronę.
  • Za pośrednictwem programu nohup, czyli w praktyce: nohup nazwapolecenia. Tak uruchomione polecenie/skrypt będzie wykonywało swoje zadanie nawet po wylogowaniu (system oczywiście nadal musi działać, a komputera nie wolno wyłączać ;) Na koniec prac szukaj w katalogu domowym pliku nohup.out

 


 

Przykłady

 


 

Tworzenie archiwum tar.

Zamiast wklepywać zlecenie tar o treści:
tar -zcf /home/antek/Desktop/`date +%Y.%m.%d.%H.%M.%S`.tar /var/log
polecam utworzyć skrypt rc.archiw (do pobrania z mojego archiwum). Można go będzie odpalić osobiście lub za pomocą crona. Skrypt wykona nam archiwizację katalogu /var/log , w nazwie paczki tar umieści datę oraz godzinę archiwizacji, zaś samą paczkę umieści na Desktopie usera antek. Więcej na temat tego skryptu tutaj.

Pamiętaj, by skrypt miał prawo do wykonania.

 


 

Zliczanie plików w wybranym katalogu

Aby mieć większą kontrolę nad zawartością ważnych katalogów, można samodzielnie sprawdzać, czy zmieniła się liczba plików. Zamiast wklepywać zlecenie: ls -aA1 | wc -l (małe L) można utworzyć skrypt o podobnej budowie:

#!/bin/sh
ls -aA1 | wc -l


Wyjaśnienie budowy zlecenia: ls -aA1 | wc -l

ls czyli listowanie. Parametr a spowoduje wylistowanie wszystkich plików, także ukrytych. Parametr A nie pozwoli na wyświetlenie katalogów: własnego i nadrzędnego. Parametr 1 zmusi do wyświetlenia jednej nazwy pliku w jednym wierszu-linii. Teraz wystarczy policzyć ilość wyświetlonych linii, dlatego za pomocą znaczka | uruchomimy tzw. potok, czyli przekierowanie wyników pierwszego zlecenia do następnego zlecenia.
wc -l zlicza ilość wierszy

Jeżeli chcemy policzyć ilość plików we wskazanym katalogu, to wpiszemy:
ls -aA1 /nazwakatalogu | wc -l

Jeżeli chcemy policzyć ilość plików o rozszerzeniu txt we wskazanym katalogu, to wpiszemy:
ls -aA1 /nazwakatalogu/*.txt | wc -l

Pamiętaj, by skrypt miał prawo do wykonania.

 


 

Jak wymusić, by skrypt zadziałał tylko pod userem root

Poza zwykłym nadaniem praw dla naszego skryptu, można tak zbudować skrypt, by w przypadku uruchomienia go przez zwykłego usera pojawił się komunikat błędu NIE JESTES ROOTEM, WIEC SPADAJ GOSCIU OD TEGO SKRYPTU. Skrypt powinien mieć budowę:

#!/bin/sh
if [ "$(whoami)" != "root" ] ; then
   echo "NIE JESTES ROOTEM, WIEC PA, PA." >&2
   exit 1
fi

ls -aA1 | wc -l >>zliczanie.txt

exit 0


Wyjaśnienie budowy skryptu:
if [ "$(whoami)" != "root" ] ; then czyli: jeżeli wynik zlecenia whoami nie brzmi root, to...
echo "NIE JESTES ROOTEM, WIEC PA, PA." >&2 za pomocą zlecenia echo pokaż komunikat: NIE JESTES ROOTEM, WIEC PA, PA.
ls -aA1 | wc -l >>zliczanie.txt czyli jakieś zlecenie, w naszym przypadku omówione powyżej zliczanie plików. Przekierowanie wyników zlecenia do pliku zliczanie.txt za pomocą >> umożliwia dopisanie wartości (znaczek > wyczyszcza plik i wpisuje ostatnią wartość).

Pamiętaj, by skrypt miał prawo do wykonania.

 


 

Poprawianie wyglądu shella podczas logowania.

Na sąsiedniej stronie opisałem sposoby poprawiania widoku shella. Polecam jeden punkt: skrypt powitanie. Za jego pomocą zmusimy shella, by tuż po zalogowaniu powitał nas, pokazał datę i sprawdził pocztę. Oczywiście skrypt zostanie uruchomiony za dzięki wpisowi w pliku ~/bashrc .Więcej na ten temat tutaj.

Budowa skryptu powitanie:

#!/bin/sh#czyli konfiguracja shella dla skryptu
echo 'JESTES NA KOMPUTERZE: '#czyli wywietlenie komunikatu JESTEŚ...
cd /bin;./hostname#czyli uruchomienie zlecenia hostname (wyświetli się nazwa naszego komputera)
echo ' '#czyli jeden pusty wiersz
echo 'DZISIAJ MAMY: '
cd /bin;./date
echo ' '
echo 'sprawdzam poczte... '
mail
echo ' '

Pamiętaj, by skrypt miał prawo do wykonania.

 


 

Czyszczenie cache przeglądarki Galeon.

Zamiast wklepywać zlecenie:
rm -rf /home/antek/.galeon/mozilla/galeon/Cache
można utworzyć skrypt cachegaleon i odpalać go poprzez umieszczenie w pliku /home/antek/.bash_profile lub bashrc wiersza /home/antek/cachegaleon lub ~/cachegaleon lub $HOME/cachegaleon . Wówczas czyszczenie cache przeglądarki Galeon odbędzie się automatycznie tuż po zalogowaniu usera antek.

Zawartość skryptu: cachegaleon

#!/bin/bash
rm -rf $HOME/.galeon/mozilla/galeon/Cache

Zlecenie rm -rf posiada opcje: r czyli rekurencyjnie (z podkatalogami) oraz f czyli force (kasuje bez pytania o zgodę na kasowanie poszczególnych plików). Jeżeli bedziesz chciał jednocześnie skasować zawartość katalogu /home/antek/tmp wystarczy dodać kolejny wiersz:
rm -rf $HOME/tmp

Pamiętaj, by skrypt miał prawo do wykonania.



Aby skasować automatycznie dane innych programów okienkowych KDE, należy w skrypcie ustalić inną ścieżkę dostępu (znaczek tyldy ~ symbolizuje katalog domowy usera np. /home/antek/):
  • Konqueror (lista odwiedzonych stron w pasku adresu):
    ~/.kde/share/config/konq_history/*
    ~/.kde/share/apps/konqueror/konq_history
  • Kosz na Pulpicie
    ~/.local/share/Trash/files/
    ~/.local/share/Trash/info
  • Pliki tymczasowe
    ~/.kde/tmp-localhost/
  • tmp (obrazki)
    ~/.thumbnails/normal/
    ~/.thumbnails/large/
  • tmp (obrazki)
    ~/.kde/cache-localhost/background/
  • Konfigi Kaffeine
    ~/.kde/share/apps/kaffeine/*
  • Komunikator Kopete (archiwa rozmów na protokole Gadu-Gadu)
    ~/.kde/share/apps/kopete/logs/GaduProtocol/numerGG/*
  • katalog z plikami zawierajacymi maile (Kmail)
    ~/.kde/share/apps/kmail/mail/inbox/cur/
    ~/.kde/share/apps/kmail/mail/sent-mail/cur/
  • Ważny plik zapisujący historię poleceń w shellu
    ~/.bash_history
  • Pozycjonowanie ikon na Pulpicie
    ~/.kde/share/apps/kdesktop/IconPositions

 


 

Automatyczne zapisywanie (archiwizowanie) stron www.

Czasami musisz regularnie tworzyć kopię strony www (np. z notowaniami kursu walut - raz dziennie). Zamiast wklepywać zlecenie:
lynx -source http://adres/gielda/index.html >/home/antek/gielda/waluty_`date +%Y.%m.%d.%H.%M.%S`.html
można utworzyć skrypt o tej samej treści i odpalać go poprzez CRON. Przyjmuję, że masz w swoim Linuksie zainstalowaną przeglądarkę tekstową LYNX.

Zawartość skryptu:

#!/bin/bash
lynx -source http://adres/gielda/index.html >/home/antek/gielda/waluty_`date +%Y.%m.%d.%H.%M.%S`.html

Zlecenie wykorzystuje przeglądarkę LYNX z opcją -source (dokładne wyświetlenie źródła strony) lub dump (opcja ta generuje tekst bez źródła html). Następnie poprzez "przekierowanie potoku" za pomocą znaczka > jest tworzony plik *.html z zawartością zlecenia lynx -source (czyli pełnego kodu html ze wskazanej strony) lub jest tworzony plik *.txt z zawartością zlecenia lynx -dump (czyli treści strony html, ale bez jej formatowania html). Znaczek ` znajduje się na klawiszu z ~tyldą (lewy, górny klawisz).

Pamiętaj, by skrypt miał prawo do wykonania.

 


 

Prosty przykład korzystania ze zmniennych wewnętrznych.

Skrypt powitanie wyświetla komunikat żądający wpisu imienia, potem nazwiska, zapamiętuje te dwie zmienne wewnętrzne i dokonuje ich przetworzenia w najprostszy sposób, czyli poprzez wyświetlenie komunikatu. Skrypt zawiera polecenia: echo , read.

Zawartość skryptu powitanie

#!/bin/bash
echo -e "Podaj swoje imię: \c"
read imie
echo -e "Podaj swoje nazwisko: "
read nazwisko
echo "Witaj, " $imie $nazwisko

Pamiętaj, by skrypt miał prawo do wykonania.

 


 

Polecam stronę: http://binboy.sphere.pl/index.php?show=107

 


 

 
twarogal@wp.pl

Uwaga: z powodu namnożenia się różnych złodziejskich witryn www, które kopiują moje strony i umieszczają je u siebie wraz z komercyjnymi reklamami (na których zarabiają) informuję, że wszelkie prawa są zastrzeżone.

Uwaga. Aby uniknąć zasysania całej witryny gorzow-wlkp.pl/linux za pomocą programów typu TeleportPro, WebCopier itd. informuję, że udostępniłem spakowaną wersję (w formacie RAR).

 
 

 

 

Witryna była dostępna pod adresami: strony.wp.pl/wp/twarogal , strony.wp.pl/wp/linuxtwarka , twarogal.republika.pl , klub.chip.pl/twarogal oraz gorzow-wlkp.net (w latach 2003/04).

 

 

gorzow-wlkp.pl

Informacje o odwiedzających są rejestrowane i publicznie udostępniane na pod adresem: http://gorzow-wlkp.pl/licznik/