Aktualizacja systemu – skrypt bash
Pierwszy komunikat jaki w nas uderzy po pierwszym zalogowaniu do serwera to informacja ile pakietów wymaga aktualizacji. Aktualizacje to bardzo istotny aspekt w kontekście bezpieczeństwa serwera, dlatego warto regularnie instalować łatki i usprawnienia oprogramowania. Jak każdy admin jesteśmy leniwi i zautomatyzujemy sobie ten proces poprzez napisanie prostego skryptu bash. W końcu to aż cztery polecenia do wpisania za każdym razem! Wyobraźcie sobie ile to czasu 🙂
Stwórzmy miejsce do przechowywania skryptów
Jako, że będzie to nasz pierwszy skrypt to dobrą praktyką jest stworzenie sobie miejsca na ten i wszystkie przyszłe skrypty. Pozostawiam tutaj dowolność, ale ja na każdym swoim serwerze tworzę folder o konkretnej nazwie i zawsze w tym samym miejscu, co później znacznie ułatwia mi pracę. Utworzenie folderu to jedno proste polecenie:sudo mkdir /home/skrypty
Potrzebujemy „sudo”, czyli uprawnień administratora, gdyż tworzymy folder poza środowiskiem pracy danego użytkownika. W ten sposób skrypty będą dostępne również dla każdego innego użytkownika serwera.
Budowa skryptu bash
Tworzymy i otwieramy plik do edycji:sudo nano /home/skrypty/aktualizacja.sh
Nano to tekstowy edytor działający w terminalu (CLI). Jest to rozwiązanie bardzo uproszczone przez co jest przyjazne początkującym użytkownikom. Dla bardziej zaawansowanych polecany jest vim, który po nauczeniu się wszystkich skrótów klawiszowych jest naprawdę potężny. Niestety edycja dokumentów w nano nie jest zbyt wygodna, a ja nigdy nie miałem cierpliwości do nauki vima, więc skrypty piszę w edytorze graficznym na hoście i przez nano jedynie je wklejam.
Gotowy skrypt do aktualizacji, który przygotowałem, wygląda tak:#!/bin/bash
#Skrypt do aktualizacji systemu i pakietow - odroid.pl
echo 'Krok 1 - update'
sudo apt update
echo 'Krok 2 - full-upgrade'
sudo apt full-upgrade -y
echo 'Krok 3 - dist-upgrade'
sudo apt dist-upgrade -y
echo 'Krok 4 - autoremove'
sudo apt autoremove -y
echo 'Krok 5 - clean'
sudo rm -rf /var/cache/apt/archives/apt-fast
sudo apt clean
#echo 'Krok 6 - reboot'
#sudo reboot
Teraz po kolei omówimy go sobie linijka po linijce. Nie jest to niezbędne, ale dobrą praktyką jest rozpocząć każdy skrypt bash deklaracją interpretera „#!/bin/bash”, dzięki czemu system operacyjny od razu wie jak ma interpretować kod zawarty w dalszej części skryptu. Druga linijka zaczyna się od znaku „#”, co jest interpretowane jako początek komentarza, czyli ciągu znaków, który nie jest kodem wykonywalnym. Warto komentować szczególnie bardzo skomplikowane skrypty, ułatwia to późniejszą orientację w temacie. Ja w drugiej linijce zawsze dodaję komentarz, w którym opisuję po krótce do czego służy dany skrypt. Dalej przechodzimy już do kodu właściwego, który składa się z czterech części głównych. W każdej z nich najpierw poleceniem „echo” wyświetlamy informację jakie polecenie zostanie za chwilę wykonane, a następnie wydajemy to polecenie. W ten sposób w trakcie działania programu będziemy widzieć na jakim jesteśmy etapie. Ostatnie dwie linijki wrzuciłem jako komentarz, bo osobiście uważam, że nie ma potrzeby restartować serwera po każdej aktualizacji. Zdecydowanie wolę sam wykonać kontrolowany restart. Jednak pozostawiłem ten kawałek kodu do informacji, że można tak to zrobić. Dodatkowo w kroku 5 zapewne zwróciliście uwagę, że wyrzucamy pewien folder. Jest to niezbędne, aby polecenie „apt clean” nie wyrzucało nam za każdym razem błędu o następującej treści:W: Problem unlinking the file apt-fast - pkgAcquire::Clean (21: Is a directory)
Posiadając tak wypełniony plik naciskamy CTRL+X, dostajemy pytanie czy zapisać plik, wybieramy na klawiaturze „y”, zostajemy zapytani czy zmienić nazwę pliku, nie chcemy jej zmieniać, więc zostawiamy jak jest i potwierdzamy ENTERem.
Skrypt należy uczynić wykonywalnym
Skrypt uruchamiamy poleceniem:/home/skrypty/aktualizacja.sh
W efekcie otrzymamy jednak rezultat:-bash: /home/skrypty/aktualizacja.sh: Permission denied
Jest to spowodowane tym, że plik nie ma nadanych odpowiednich uprawnień, konkretnie do bycia wykonywalnym (uruchamialnym). Sprawdźmy w takim razie jego uprawnienia:ls -l /home/skrypty/aktualizacja.sh
Widać, że uprawnienia tego pliku opisane są jako:-rw-r--r--
Nadajmy zatem możliwość uruchamiania pliku:sudo chmod +x /home/skrypty/aktualizacja.sh
Teraz sprawdźmy jeszcze raz uprawnienia pliku, a otrzymamy:-rwxr-xr-x
Jak widać doszły nam „x”, co oznacza, że plik jest wykonywalny. Teraz skrypt uruchomi nam się prawidłowo. Należy to działanie wykonywać dla każdego nowego skryptu.
Jeżeli materiał zawarty w tym wpisie jest dla Ciebie wartościowy i masz ochotę wesprzeć moją pracę to zapraszam na mój profil na >Patronite<. Zachęcam także do odwiedzenia mojej strony >tomaszdunia.pl<. Możesz także zagadać do mnie na Twitterze >@theto3k<.
Nastepny wpis:
Nowy serwer – dobre praktyki na start
Kategorie: Dla początkujących,Poradniki,Skrypty - @ 2022-06-02 20:00