Opowieści s-krypty. Kilka słów o automatyzacji w Linuksie
Do pisania zasiadłem dziś z lekką pustką w głowie. (Chciałbym dodać: „co rzadko mi się zdarza”, ale nieładnie jest tak okłamywać Czytelników). Przecież nie będę tworzył kolejnego wpisu w rodzaju: „Dziesięć najlepszych książek o AI, które koniecznie musisz przeczytać”; „Osiem poleceń basha, które po prostu trzeba znać”; „Sześć najmocniejszych kaw, które powinieneś dziś wypić, żeby twój mózg zechciał odpalić”… No dobra, z kawami to może lekka przesada, ale skąd mi się wziął w głowie ten bash?
Wróciłem myślami do dawnych czasów, gdy wstukiwałem zielone literki na czarnym ekranie terminala podłączonego do uniksowego systemu mojej uczelni. Owszem, gdy nikt nie patrzył, grało się w kultowego MUD-a „Studnia dusz”, lecz mimo wszystko trochę też pracowaliśmy i jakieś polecenia i zasady tworzenia skryptów do dziś tkwią mi w głowie. Na studiach uczono nas prostej reguły: jeśli trzeba coś zrobić ręcznie więcej niż trzy razy, to znaczy, że najwyższy czas zastanowić się nad automatyzacją. Przypuśćmy, że każdego dnia po skończonej pracy trzeba skopiować określone pliki z roboczego folderu do folderu na kopie zapasowe, zmienić ich nazwy z uwzględnieniem aktualnej daty, skompresować i wysłać na serwer. Przykład jest może trywialny, ale wykonywanie tego rodzaju zadań codziennie „z palca” jest po pierwsze uciążliwe i czasochłonne, a po drugie – stanowi żyzny grunt dla błędów. Pół biedy, jeśli zamiast ls człowiek napisze sl i zamiast listy plików i katalogów na ekranie pojawi się animowana lokomotywa (wtajemniczeni z pewnością wiedzą, o co chodzi). Inne pomyłki mogą być znacznie groźniejsze w skutkach, dlatego warto napisać skrypt, który będzie robił wszystko, co trzeba, niezawodnie i w zadanej kolejności.
Po co mi skrypt, skoro mam AI?
„Dobra, dobra – powiesz być może. – Ale z ciebie boomer. Przecież żyjemy w czasach, w których sztuczna inteligencja potrafi wypluć kod w kilka chwil. Po co się tego uczyć, skoro mogę poprosić właściwie dowolnego popularnego chatbota o wygenerowanie skryptu, który zrobi to, czego chcę?”. Oczywiście, że AI chętnie pomoże. Problem polega na tym, że podobnie jak człowiek, bywa omylna. A bash w rękach administratora nie ma zbyt wielu hamulców bezpieczeństwa. Jeśli nie zweryfikujesz utworzonego skryptu, w którym pojawił się jakiś paskudny błąd, możesz całkiem automatycznie zrobić coś, czego będziesz równie automatycznie żałować. Aby bezpiecznie optymalizować zadania, warto najpierw poznać reguły gry. Trzeba wiedzieć, jak działają potoki (ten magiczny pionowy znak |, który przesyła dane z jednego programu do drugiego), czym są zmienne środowiskowe i w jaki sposób terminal interpretuje nasze instrukcje.
Nie bez powodu piszę o Linuksie oraz o rękach administratora. Współczesne systemy operacyjne są wyposażone w wygodne interfejsy graficzne, bez których trudno sobie wyobrazić wykonywanie typowych zadań, lecz operacje administracyjne do dziś całkiem słusznie kojarzą się z systemami uniksopodobnymi i poleceniami wydawanymi w terminalu. Z perspektywy zwykłego użytkownika może to wyglądać nieco archaicznie (ktoś powiedział: „dyskietka”?), lecz pozory bywają mylące. Terminal jest bowiem czymś więcej niż tylko alternatywnym sposobem obsługi komputera. To środowisko pozwalające łączyć pojedyncze polecenia w sekwencje i automatycznie realizować zadania, które w interfejsie graficznym wymagałyby wielu kliknięć. Za pomocą kilku poleceń można automatycznie tworzyć kopie zapasowe, porządkować pliki według określonych kryteriów, zmieniać nazwy setek zdjęć jednocześnie czy monitorować parametry systemu z uwzględnieniem powiadomień o błędach albo kończącej się przestrzeni dyskowej. W firmach podobne rozwiązania pomagają generować raporty, archiwizować dane lub uruchamiać regularne zadania bez udziału człowieka. Korzyść jest oczywista: raz przygotowany skrypt może wykonywać swoją pracę przez tygodnie, miesiące, a czasem nawet lata. Człowiek nie musi pamiętać o każdym kroku procesu ani obawiać się, że przypadkowo pominie któryś z jego etapów. Cóż, niektóre najbardziej praktyczne rozwiązania powstają z czystego lenistwa.
Po co mi AI, skoro mam skrypt?
Tym celowo przewrotnym nagłówkiem chciałem zwrócić uwagę na fakt, że w ostatnich latach trochę zachłysnęliśmy się narzędziami bazującymi na sztucznej inteligencji. Owszem, jest się czym zachłystywać, bo sztuczna inteligencja potrafi bardzo wiele – i coraz więcej. Warto jednak pamiętać, że nawet najbardziej zaawansowane rozwiązania nie działają w próżni. Wciąż potrzebujemy prozaicznych może, ale niezbędnych procesów, takich jak pobieranie, przetwarzanie, zapisywanie czy archiwizowanie danych, które muszą działać z zegarmistrzowską precyzją. Dlatego za kulisami nadal funkcjonują mechanizmy niezbyt spektakularne, lecz sprawdzone i rozwijane od dziesięcioleci. To dzięki nim wiele nowoczesnych systemów może działać sprawnie i przewidywalnie. Innymi słowy, nie chodzi o wybór między AI a umiejętnością automatyzacji żmudnych zadań. Czasami potrzebne jest jedno i drugie.
Zatem czy warto zajrzeć za owe kulisy? Jeśli terminal budzi raczej twoje zaciekawienie niż obawy; jeśli chcesz potraktować system operacyjny jak zestaw klocków Lego, z których można zbudować niemal wszystko; jeśli marzy ci się sprawdzian w roli administratora – zdecydowanie warto. Skąd czerpać wiedzę na ten temat? Nie patrz na mnie (to który ja miałem poziom w „Studni dusz”?). Na szczęście są ludzie, którzy mają potrzebną wiedzę i umieją ją ubrać w słowa. Jest wśród nich Donald A. Tevault, specjalista w dziedzinie bezpieczeństwa i optymalizacji systemów Linux z dwudziestoletnim doświadczeniem. Niedawno ukazała się jego książka Linux. Zostań mistrzem skryptów powłoki, skierowana do osób zainteresowanych tematem. Autor zaczyna omawianie go od podstaw, mogą więc sięgnąć po nią nawet ci, dla których dziwaczne słówka typu grep, awk, sed czy chmod brzmią jak inkantacje rodem z Hogwartu.
Mnie też korci, żeby wrócić do tego zagadnienia. Nawet nie z myślą o administrowaniu, tylko choćby po to, by wyczarować prosty skrypt, który po uruchomieniu systemu będzie witał mnie wizerunkiem pociesznej krowy ze znaków ASCII (cowsay), wygłaszającej losowy cytat na dobry początek dnia (fortune). Albo po to, by po prostu trochę rozruszać s(z/t)are boomerskie komórki. Bo wiele przydatnych umiejętności zaczyna się od zwykłej ciekawości i odrobiny zabawy.

