Znajdziesz tutaj parę moich prostych skryptów, które kiedyś miałem okazje napisać/przepisać/przerobić i do dzisiaj umilają mi życie ;-)
———————————————————————————
admin.sh – skrypt wykonujący polecenia shellowe zapisane do pliku *.sh dla danych hostów. Skrypt wymaga struktury katalogów: $HOME/tasks i $HOME/done, a w nich potrzebne są podkatalogi z hostname/adresem IP hostów, dla których chcemy wykonać kolejne skrypty shellowe. Do katalogu $HOME/tasks wrzucamy pliki z rozszerzeniem .sh, do których wrzucamy już dowolne komendy shellowe. Po poprawnym zakończeniu pojedyńczego skryptu dany plik .sh jest przenoszony do katalogu $HOME/done, jeżeli jeden ze skryptów dla danego hosta się nie powiedzie ($? != 0) omijamy resztę plików i przechodzimy do następnego hosta.
Przykładowe użycie przy założeniu:
Trzy serwery test01, test02, test03, w każdym plik x.sh o treści:
#!/bin/bash
touch blabla
W katalogu test02 dodatkowo a.sh o tej samej treści co x.sh + c.sh (plik, z literówką, po którym sprawdzamy, czy skrypt przejdzie do następnego katalogu omijając pozostałe pliki (w tym wypadku x.sh)), o treści:
#!/bin/bash
toauch blabla
Działanie:
nicon@nicon:/data$ ./admin.sh
Pseudo-terminal will not be allocated because stdin is not a terminal.
OK: Skrypt: ./x.sh dla adresu: test01 zostal wykonany poprawnie. Przenosze skrypt do /data/done/test01.
Pseudo-terminal will not be allocated because stdin is not a terminal.
OK: Skrypt: ./a.sh dla adresu: test02 zostal wykonany poprawnie. Przenosze skrypt do /data/done/test02.
Pseudo-terminal will not be allocated because stdin is not a terminal.
-bash: line 2: toauch: command not found
ERR: Dla adresu: test02 nie udalo sie wykonac skryptu: ./c.sh. Kontynuuje od nastepnego katalogu.
Pseudo-terminal will not be allocated because stdin is not a terminal.
OK: Skrypt: ./x.sh dla adresu: test03 zostal wykonany poprawnie. Przenosze skrypt do /data/done/test03.
———————————————————————————
apache.sh – skrypt dodający wpisy VirtualHost do /etc/apache2/sites-enabled/default (domyślny plik z vhostami na Debianie), przed uruchomieniem trzeba zedytować zmienną ServerAdmin umieszczając w miejscu „$_ADRES_EMAIL_$” poprawny adres e-mail administratora.
Skrypt musi mieć podany jeden parametr – nazwę domeny.
Skrypt również tworzy katalog /var/www/vhosts/$_NAZWA_DOMENY_$.
———————————————————————————
backup.sh – skrypt backupujący podany w parametrze katalog i wysyłający go (skompresowanego do paczki .tar.gz) na serwer ftp.
Zanim uruchomisz ustaw wymagane zmienne: (FTPU,FTPH,FTPP,TMPD,MTO,ADMIN_INFO) edytując plik backup.sh.
Do poprawnego działania skryptu wymagany jest ncftp (ncftpput konkretniej).
———————————————————————————
bin-log-del.sh – prosty skrypt, który kasuje bin-logi (mysql) od początku do godziny wstecz względem obecnej. Przydatne w przypadku dużej ilości napływających bin-logów przy małej ilości miejsca na dysku (na przykład: dodaj do crontaba do uruchomienia co kilka godzin (alternatywa dla „expire_logs_days„)).
———————————————————————————
check_bandwidth.sh – skrypt przygotowany do Nagiosa (można wykorzystywać również jako zwykły skrypt) sprawdzający aktualne wykorzystanie prędkości łącza (download, upload i suma). Przed uruchomieniem koniecznie trzeba zainstalować program ifstat!
Skrypt wymaga trzech parametrów – nazwa interfejsu, ilość kbit dla statusu WARNING, ilość kbit dla statusu CRITICAL, np:
# ./check_bandwidth.sh eth0 10000 120000
———————————————————————————
check_replication.sh – skrypt przygotowany do Nagiosa (można wykorzystywać również jako zwykły skrypt) sprawdzający działanie replikacji baz danych MySQL. Przed uruchomieniem trzeba nadać użytkownikowi sprawdzającemu uprawnienia do MySQL (REPLICATION CLIENT (GRANT REPLICATION CLIENT ON *.* TO ’$_USER_$’@’localhost’ IDENTIFIED BY ’$_PASSWORD_$’)) i wpisać je do odpowiednich zmiennych w skrypcie.
———————————————————————————
cpdiff.sh – skrypt porównywający procentowo rozmiary dwóch plików/katalogów, przydatne, jak się włączy cp zamiast rsynca na duże pliki i jesteśmy ciekawi ile procent pliku/katalogu zostało już skopiowane :-) Napisane z powodu nudy podczas wykładu „Architektura Systemów Komputerowych„.
———————————————————————————
mass-txt-to-srt-converter.sh
Skrypt masowo konwertujący napisy w formacie microdvd (txt) do subviewer (srt). Przed uruchomieniem trzeba zainstalować program sub2srt + mediainfo.
Każdy plik tekstowy musi mieć taką samą nazwę, co odpowiadający mu plik wideo (np. test.avi + test.txt). Skrypt wyszukuje pliki wideo (avi, mkv) i dla wszystkich znalezionych plików konwertuje napisy (.txt) z odpowiednim frame rate (fps) do formatu subviewer (.srt). Skrypt uruchamiamy w katalogu, w którym mamy filmy.
———————————————————————————
optimize.sh – skrypt sprawdzający tabele (MySQL), które wymagają optymalizacji – na koniec uruchamiając zapytanie/a:
optimize table $_nazwa_tabeli_wymagającej_optymalizacji_$;
———————————————————————————