Archiwa tagu: Bash

Bash + SSH: jak sprawdzić czy można wykonać zdalne polecenie ssh z bash-a (skrypty)?

Prędzej czy później każdy administrator stara się optymalizować swoją pracę przez pisanie skryptów automatyzujących jego pracę. Cześć skryptów zapewnie będzie wykonywała zdalne polecenia przez ssh (nie wszędzie można instalować własne oprogramowanie, nie wszędzie jest Bash). Jeżeli pracujemy w środowisku z wieloma administratorami wypadałoby też sprawdzać w skryptach, czy mamy połączenie do zdalnych systemów.
Jak to można zrobić?

Najprościej użyć kodu błędu ostatniego polecenia ;). W skryptach przeważnie też nie należy pytać o hasło do zdalnej maszyny ;).

user@ubuntu:~$ ssh -o PasswordAuthentication=no root@192.168.1.12 "date"
Thu Jul 29 02:04:21 CDT 2011
user@ubuntu:~$ ssh -o PasswordAuthentication=no root@192.168.1.12 "date" > /dev/null 2>&1; echo $?
0
user@ubuntu:~$ ssh -o PasswordAuthentication=no root@192.168.1.12 "date2" > /dev/null 2>&1; echo $?
127
user@ubuntu:~$ ssh -o PasswordAuthentication=no root@alamakota "date2" > /dev/null 2>&1; echo $?
255

Bash: wartość domyślna zmiennej

Czasem w prostych skryptach warto nadać zmiennym wartość domyślną. W moim przypadku chodzi głównie o nazwy plików konfiguracyjnych, które są ściśle określone ale też można podać opcjonalnie inne pliki. Można to zrobić na dwa sposoby, jeden to oczywiście walka z if i else ale drugi jest bardziej przyjemny.

W przypadku bardzo prostych skryptów mozna użyć zmiennej $1:

LIST_OF_SERVERS=${1:-"servers_list.txt"};

Albo bardziej rozbudowany:

LIST_OF_SERVERS=${LIST_OF_SERVERS:-"servers_list.txt"};

Drobne wyjaśnienie:
Zmienne można zapisywać w dwa sposoby: jako $ + NAZWA_ZMIENNEJ (bardzo to ogranicza wszystkie zabawy z zmienną) oraz jako $ { NAZWA_ZMIENNEJ}. W drugim przypadku możemy używać większej ilości operacji, jak tutaj podstawiania wartości domyślnej.

Linux – Bash – skryptowanie w linii poleceń – cz 1.

Myślałem że coś tam wiem o używaniu Basha, niestety (a raczej stety 😉 ), przyjaciel z pracy  pokazał mi dzisiaj jak mało umiem ;). Problem do rozwiązania był prosty: należało sprawdzić adresy IP 20 serwerów. Stwierdziłem, że pisanie skryptu zajmie więcej czasu niż ręczne sprawdzenie ich przy pomocy komendy 'host’. Cóż, rozwiązanie okazało się proste.

Czytaj dalej Linux – Bash – skryptowanie w linii poleceń – cz 1.

Linux: Bash – kilka uwag

Bawie się ostatnio skryptami powłoki i postanowiłem napisać kilka uwag, które pozwolą tworzyć lepsze skrypty automatyzujące pracę systemu:

  1. skrypt zawsze powinien logować swoje uruchomienie łącznie z czasem i parametrami, które zostały do niego podane (pozwala to określić czy skrypt został uruchomiony, kiedy został uruchomiony oraz jak powinien się zachować),
  2. basename pozwoli okreslić Ci nazwę skryptu, który uruchamiasz bez całej ścieżki,
  3. dirname pozwoli określić, gdzie skrypt się znajduje, możesz to wykorzystać do określenia położenia innych elementów

Wiem, mało tego 😉

Prosty sposób na debugowanie skryptów bash-a

Używając skryptów powłoki, w szczególności napisanych przez kogoś innego, przydatne bywa zobaczenie co ten skrypt naprawdę robi. Najprostszym sposobem jest dodanie poniższej linijki na początek skryptu:

set -x

Dzięki temu każda komenda wykonywana przez skrypt będzie wyświetlania na ekranie! Przykład:

Czytaj dalej Prosty sposób na debugowanie skryptów bash-a