diff --git a/README.md b/README.md index 0b6b3d89..c9158720 100644 --- a/README.md +++ b/README.md @@ -5,20 +5,20 @@ W tym repozytorium znajduje się tutaj cały kod do zainstalowania na serwerze a ## Szturm na AWS: -To przygoda otwierająca zajęcia programowania xD +To przygoda otwierająca zajęcia programowania xD. Czas trwania: ok 120-180 minut, chociaz można tu spędzić wiele czasu i często wracać, ciągle ucząc się nowych rzeczy i poznając świetnych ludzi. Jak masz już trochę doświadczenia i wiesz co robisz, to uda Ci się powiesić flagę w ok. 30 minut. ### Cel -Przygotuj wszystko czego trzeba aby rozpocząć naukę programowania na Zajęciach Programowania xD. -Zdoądź serwer, postaw stronę www i powieś flagę. Pomóż innym. +Przygotuj wszystko czego trzeba, aby rozpocząć naukę programowania na Zajęciach Programowania xD. +Zdobądź serwer, postaw stronę www i powieś flagę. Pomóż innym. Poznaj niesamowitych ludzi i zobacz jak u nas jest :) ### Wygrana: -Daje dodstęp do aktywnego uczestnictwa w rocznych darmowych Zajęć Programowania xD +Daje dodstęp do aktywnego uczestnictwa w rocznych darmowych Zajęć Programowania xD. Rozpocznij szturm, zdobądź serwer, postaw stronę www i zawieś flagę. -Albo wróć do szturmu tam gdzie skończyłeś: +Albo wróć do szturmu tam, gdzie skończyłeś: - [Etap 1 - Wprowadzenie i przygotowania - Instrukcje](http://bityl.pl/4TWc5) - [Etap 2 - Anonimowość - Instrukcje](http://bityl.pl/irUcO) @@ -39,31 +39,31 @@ Albo wróć do szturmu tam gdzie skończyłeś: #### Ważne linki: - [Szturm na AWS - Discord (Tu jesteśmy na żywo)](https://discord.gg/46JVvHgzqz) -- [Szturm na AWS - Film krok po kroku](https://www.youtube.com/playlist?list=PLaPjE0og8b6Lof4yYXJmdRv5coaVePmI5) -- [Szturm na AWS - Formularz aby dołączyć do Zajęć Programowania xD](https://zajecia-programowania-xd.pl/szturm_na_aws/caly_formularz) +- [Szturm na AWS - Film „krok po kroku”](https://www.youtube.com/playlist?list=PLaPjE0og8b6Lof4yYXJmdRv5coaVePmI5) +- [Szturm na AWS - Formularz – wypełnij go, aby dołączyć do Zajęć Programowania xD](https://zajecia-programowania-xd.pl/szturm_na_aws/caly_formularz) # Droga ASAP (dołącz w 5 minut): -## Jeżeli masz już -- serwer na zajęcia i przypisaną do niego domenę na zajęcia -- Githuba na zajęcia, VSCode i Jupytera +## Jeżeli masz już: +- serwer na zajęcia i przypisaną do niego domenę na zajęcia; +- Githuba na zajęcia, VSCode i Jupytera; -To możesz skorzystać z drogi ASAP +to możesz skorzystać z drogi ASAP. -Ale i tak wróć tutaj i przejdź wszystkie etapy pokolei, poczytaj o funkcjach które wywołujesz, poprzeglądaj kod. Poznaj się z ludźmi, pomóż komuś. To świetna zabawa i poczujesz klimat. +Ale i tak wróć tutaj i przejdź wszystkie etapy po kolei, poczytaj o funkcjach, które wywołujesz, poprzeglądaj kod. Poznaj się z ludźmi, pomóż komuś. To świetna zabawa i poczujesz klimat. Po zalogowaniu na serwer: -#### 1. wejdź na root (utwórz go jeżeli jeszcze nie robiłeś). +#### 1. wejdź na root (utwórz go, jeżeli jeszcze tego nie zrobiłeś). ``` echo $USER ``` -Jak pokazuje root to idź do kroku 2. Jeżeli nie, utwórz hasło dla root wpisując: +Jeżeli wyświetlił się „root”, to idź do kroku 2. Jeżeli nie, przejdź na konto root wpisując: ``` sudo su ``` -I sprawdź znów pisząc "echo $USER", aż będzie pokazywać root. Jak masz błąd, spytaj na grupie o pomoc. +I sprawdź znów pisząc "echo $USER", aż będzie pokazywać root. Jeżeli masz błąd, to spytaj na grupie o pomoc. #### 2. Uruchom skrypt unite_the_clans.sh stawiający wszystko za Ciebie: @@ -71,13 +71,13 @@ I sprawdź znów pisząc "echo $USER", aż będzie pokazywać root. Jak masz bł wget -q 'https://raw.githubusercontent.com/ZPXD/flaga/main/pomocnicze_skrypty/unite_the_clans.sh' && chmod +x unite_the_clans.sh && ./unite_the_clans.sh; ``` Teraz masz: -- użytkownika -- klucz RSA -- Twoja strona www stoi w internecie +- użytkownika, +- klucz RSA, +- Twoja strona www stoi w internecie. #### 3. Pobierz klucz RSA i edytuj plik ~/.ssh/config aby łączyć się ze swoim serwerem, jako użytkownik. -Jak masz serwer w AWS: +Jak masz serwer w AWS („Amazon Web Services”): ``` scp -i NAZWA_KLUCZA_PEM.pem ubuntu@NUMER_IP:/home/ubuntu/NAZWA_KLUCZA NAZWA_KLUCZA ``` @@ -94,16 +94,18 @@ Host moj_serwerek IdentityFile /home/rafi/.ssh/potezny_klucz_rafiego ``` -I sprawdź połączenie z serwerem przez VSC korzystając ze skrótu dla Twojego użytkownika (to co jest obok słowa Host w pliku config np. xd lub moj_serwerek). +I sprawdź połączenie z serwerem przez VSC korzystając ze skrótu dla Twojego użytkownika (to co jest obok słowa Host w konfiguracji ssh, czyli w pliku config np. xd lub moj_serwerek). -#### 4. Modyfikuj flagę aby było na niej coś poza "xD". To konieczne aby dołączyć do zajęć. +#### 4. Zmodyfikuj flagę, aby było na niej coś poza "xD". To konieczne, aby dołączyć do zajęć. + +Jako „flagę” rozumiemy podstronę "xd" Twojej strony WWW. Przykładowy adres Twojej flagi, to http(s)://TWOJA_NAZWA_SERWERA/xd - zawartość podstrony o podobnym adresie jest weryfikowana, czy zawiera ciąg tekstu „xD” oraz jakiś dopisek od Ciebie. Pobaw się flagą, zmień coś (zobacz etap 8 w tym pliku) lub idź dalej. #### 5. Ruszaj dalej. Jesteś już blisko: - [Etap 9 - Leć komuś pomóc - Instrukcje](http://bityl.pl/QKsi4) - [Etap 10 - Leć do nas na zamek - Instrukcje](http://bityl.pl/g7LrS) -- [I wypełnij formularz aby dołączyć do Zajęć Programowania xD](https://zajecia-programowania-xd.pl/szturm_na_aws/caly_formularz) +- [I wypełnij formularz, aby dołączyć do Zajęć Programowania xD](https://zajecia-programowania-xd.pl/szturm_na_aws/caly_formularz) #### Gotowe? diff --git a/instrukcje/etap_7_Klasyczna_strona_www_i_flaga.md b/instrukcje/etap_7_Klasyczna_strona_www_i_flaga.md index bc246b3c..80fdbf25 100644 --- a/instrukcje/etap_7_Klasyczna_strona_www_i_flaga.md +++ b/instrukcje/etap_7_Klasyczna_strona_www_i_flaga.md @@ -14,9 +14,9 @@ **3. Uruchomisz "usługę" aplikacji strony www** -tak aby była wystawiona w internecie i zobaczysz swoją stronę www sieci pod linkiem domeny. +tak aby była wystawiona w internecie i zobaczysz swoją stronę www w sieci pod linkiem domeny. -[Obejrzyj film jaks przygotować serwer, postawić stronę i powiesić flagę w wersji ASAP (w 5 minut)]() +[Obejrzyj film jak przygotować serwer, postawić stronę i powiesić flagę w wersji ASAP (w 5 minut)]() @@ -40,7 +40,7 @@ Jeżeli masz z tym problem, wróć do [Etap 4.3 - połączenie z serwerem](https ### 2. Pssst! -Od teraz, gdyby coś poszło nie tak, zawsze możesz zrestartować serwer i zacząć od nowa: [Resetowanie Serwera](http://bityl.pl/Bmvwu). To potrwa ok 5-10 minut i będziesz mógł zacząć od nowa. Raczej tego nie rób jak nie trzeba - stracisz wszystko co jest na serwerze. +Od teraz, gdyby coś poszło nie tak, zawsze możesz zrestartować serwer i zacząć od nowa: [Resetowanie Serwera](http://bityl.pl/Bmvwu). To potrwa ok 5-10 minut i będziesz mógł zacząć od nowa. Raczej tego nie rób jak nie trzeba - bo stracisz wszystko, co jest na serwerze. ### 3. Root. @@ -75,7 +75,7 @@ echo $NEW_USER #### Tworzymy użytkownika. -Czas stworzyć użytkownika o takiej nazwie jak chcesz. +Czas stworzyć użytkownika o takiej nazwie, jak chcesz. Będziesz pytany o numer telefonu, pokoju i inne rzeczy - wszystko pomijaj naciskając enter. @@ -140,7 +140,7 @@ Dzięki sudo możesz robić takie rzeczy jak instalacje. Zwłąszcza takie któr #### Upewnij się gdzie jesteś: -Napisz pwd a poznasz ścieżkę katalogu w którym jesteś. +Napisz pwd, a poznasz ścieżkę katalogu, w którym jesteś. ``` pwd ``` @@ -167,7 +167,7 @@ Nadaj mu wymagane uprawnienia i wejdź do środka: chmod 700 /home/$USER/.ssh cd /home/$USER/.ssh ``` -Nazwij swoje klucze rsa. Bez spacji, znaków specjalnych. Najlepiej tak abyś kojarzył to z Twoim użytkownikiem i serwerem, projektem, np. klucz=xd_moj_uzytkownik: +Nazwij swoje klucze rsa. Bez spacji, znaków specjalnych. Najlepiej tak, abyś kojarzył to z Twoim użytkownikiem i serwerem, projektem, np. klucz=xd_moj_uzytkownik: ``` klucz=NAZWA_KLUCZA ``` @@ -203,7 +203,7 @@ Jeżeli masz z tym problem, wróć do [Etap 4.3 - połączenie z serwerem](https ![foto](foty_do_instrukcji/dk_2.png) -##### 3. Wpisz tam /home/X/.ssh <--- zamiast X - podaj nazwę swojego użytkownika, tę samą którą podawałeś na początku etapu 7. +##### 3. Wpisz tam /home/X/.ssh <--- zamiast X - podaj nazwę swojego użytkownika – tę samą, którą podawałeś na początku etapu 7. ![foto](foty_do_instrukcji/dk_3.png) @@ -212,7 +212,7 @@ Jeżeli masz z tym problem, wróć do [Etap 4.3 - połączenie z serwerem](https #### 4. Kliknij ok. Pokaże Ci się folder .ssh z kluczami. -#### 5. Wybierz nowoutworzony klucz bez rozszeżenia .pub i pobierz go do siebie na komputer do swojego folderu .ssh. +#### 5. Wybierz nowoutworzony klucz *bez* rozszerzenia .pub i pobierz go do siebie na komputer do swojego folderu .ssh. ![foto](foty_do_instrukcji/dk_6.png) @@ -223,23 +223,23 @@ Jeżeli masz z tym problem, wróć do [Etap 4.3 - połączenie z serwerem](https #### 7. Wejdź do folderu .ssh i tutaj zapisz plik z kluczem. -Ewentualnie zapisz go gdzie chcesz i skopiuj go do folderu .ssh potem tak jak uznasz. +Ewentualnie zapisz go, gdzie chcesz i skopiuj go do folderu .ssh potem – tak jak uznasz. ![foto](foty_do_instrukcji/dk_9.png) -#### 8. Włącz znów VSC. Kliknij w "SSH-Targets" w zembatkę (drugi przycisk po prawej od "SSH-TARGETS") +#### 8. Włącz znów VSC. Kliknij w "SSH-Targets" w zębatkę (drugi przycisk po prawej od "SSH-TARGETS") ![foto](foty_do_instrukcji/dk_10.png) -#### 9. Spyta Cię który plik edytować. Wybierz config z folderu .ssh (ten plik najwyżej na liście). I otwórz go. +#### 9. Spyta Cię, który plik edytować. Wybierz *'config'* z folderu .ssh (ten plik najwyżej na liście). I otwórz go. -Jeżeli jesteś w Home i wkleiłeś to o co prosiłem wcześniej, to zobaczysz coś w tym stylu (tylko inne adresy IP). +Jeżeli jesteś w Home i wkleiłeś to, o co prosiłem wcześniej, to zobaczysz coś w tym stylu (ale z innymi adresami IP). ![foto](foty_do_instrukcji/dk_11.png) -#### 10. Kliknij aby przejść dalej w terminalu instalacji ASAP. +#### 10. Kliknij, aby przejść dalej w terminalu instalacji ASAP. Będzie tam fragment pliku Host do wklejenia. Będzie wyglądał podobnie do: @@ -286,7 +286,7 @@ scp -i klucz_xd.pem ubuntu@$TU_WSTAW_IP_SERWERA:/home/ubuntu/.ssh/$klucz $klucz I spróbuj połączyć się przez VSCode znowu (cofnij się do instrukcji wyżej, jeżeli nie pamiętasz jak to zrobić). Jeżeli masz problem, napisz na discordzie. -## Kontynuuj dalej już Twój użytkownik. +## Kontynuuj dalej już jako Twój użytkownik. Postaw stronę www tak, abyśmy widzieli ją w sieci. @@ -304,14 +304,14 @@ Postaw stronę www tak, abyśmy widzieli ją w sieci. ### 1. Miejsce na stronę: Folder /var/www -Poza tym na AWS trzeba stworzyć folder, gdzie będziemy trzymać Twoją stronę z flagą: mkdir i nazwa folderu: /var/www. Dodaj 2>1 aby nie wyświetlało błędu, jeżeli folder już istnieje. I wejdź do /var. +Poza tym na AWS trzeba stworzyć folder, gdzie będziemy trzymać Twoją stronę z flagą: mkdir i nazwa folderu: /var/www. Dodaj 2>&1, aby nie wyświetlało błędu, jeżeli folder już istnieje. I wejdź do /var. ``` -mkdir /var/www +mkdir /var/www 2>&1 cd /var ``` Jeżeli ten katalog już istnieje (będzie błąd) - jest ok - idź dalej. -W środku znajduje się katalog www. Tam będziemy trzymać strony. Nadaj mu uprawnienia które pozwolą potem na dostęp do plików danych. I wejdź do środka. +W środku znajduje się katalog www. Tam będziemy trzymać strony. Nadaj mu uprawnienia, które pozwolą potem na dostęp do plików danych. I wejdź do środka. ``` sudo chown -R www-data:www-data /var/www sudo chmod -R 775 /var/www @@ -320,7 +320,7 @@ cd /var/www ### 2. Git. -Instalujemy git'a. To narzędzie do pobierania repozytoriów czyli powiedźmy projektów, aplikacji. My pobieramy repozytorium flagi, które zawiera wszystko czego potrzeba abyś postawił stronę www i zawiesił flagę. Zainstaluj go używając apt, co zrobisz jako użytkownik tylko, jak pamiętasz, używając sudo. +Instalujemy git'a. To narzędzie do pobierania repozytoriów czyli – powiedzmy – projektów, aplikacji. My pobieramy repozytorium flagi, które zawiera wszystko czego potrzeba, abyś postawił stronę www i zawiesił flagę. Zainstaluj go używając apt, co zrobisz jako zwykły użytkownik ale, jak pamiętasz, używając sudo. ``` sudo apt install git ``` @@ -333,9 +333,9 @@ I wejdź do flagi. ``` cd flaga ``` -Wszystkie polecenia od teraz do końca skryptu wykonywane są wykonywane w folderze /var/www/flaga . +Wszystkie polecenia od teraz do końca skryptu wykonywane są w folderze /var/www/flaga . -PS: Zawsze możesz sprawdzić w którym folderze jesteś, pisząc: +PS: Zawsze możesz sprawdzić, w którym folderze jesteś, pisząc: ``` pwd ``` @@ -348,13 +348,13 @@ domena=TUTAJ_WPISZ.pl echo 'Moja domena to:' $domena ``` -Domena się nie zgadza? Popraw powyższe. Zgadza? Chodźmy dalej. +Domena się nie zgadza? Popraw powyższe. Zgadza się? Chodźmy dalej. -Chcesz dowiedzieć się trochę co się dzieje pod maską, samemu to poczuć i przeklikać? Świetny wybór, czegoś się nauczysz albo chociaż nabierzesz obycia i doświadczenia. Do dzieła. +Chcesz dowiedzieć się trochę, co się dzieje pod maską, samemu to poczuć i przeklikać? Świetny wybór – czegoś się nauczysz albo chociaż nabierzesz obycia i doświadczenia. Do dzieła. #### Instalacja paczek systemowych wymaganych do postawienia strony. -Uruchom skrypt pythona który zawiera serię komend dla linuxa, które zrealizuje automatycznie. Jeżeli jesteś ciekaw co to za komendy możesz podejrzeć plik pisząc cat + nazwa_pliku (**cat /var/www/flaga/pomocnicze_skrypty/xD.py** ). +Uruchom skrypt pythona, który zawiera serię komend dla linuxa, które zrealizuje automatycznie. Jeżeli jesteś ciekaw, co to za komendy możesz podejrzeć plik pisząc cat + nazwa_pliku (**cat /var/www/flaga/pomocnicze_skrypty/xD.py** ). PS: chodzi o xD.py z dużej litery xD.py a nie xd.py z małej litery. ``` sudo python3 /var/www/flaga/pomocnicze_skrypty/xD.py @@ -368,31 +368,36 @@ ls # sdfgsdfgsdgsgjpodgksg Wszystkie polecenia wykonywane w tym kroku są wykonywane w folderze /var/www/flaga . -Upewnij się w jakim folderze jesteś, napisz: +Upewnij się w jakim folderze jesteś. Napisz: ``` pwd ``` -Jeżeli to nie /var/www/flaga to napisz w terminalu: +Jeżeli to nie /var/www/flaga, to napisz w terminalu: ``` cd /var/www/flaga ``` Stwórz środowisko: ``` -python3 -m venv flagaenv # Stwórz środowisko flagenv używając venv. +python3 -m venv flagaenv # Stwórz środowisko flagaenv używając venv. source flagaenv/bin/activate # Aktywuj środowisko flagaenv export FLASK_APP=app.py # I zapisz zmienną FLASK_APP równą app.py (nazwie programu strony www) ``` +W przyszłości, czyli gdy już zakończysz pracę, będziesz mógł wyjść ze środowiska venv wpisując: +``` +deactivate +``` +ale na razie jeszcze tego nie rób. #### Instalacja wymaganych bibliotek. -Użyjemy do tego **pip3** - to narzędzie którym pobieramy w pythonie potrzebne biblioteki. We fladze używamy dodatkowo pliku **requirements.txt**, który jest niczym innym jak listą nazw i wersji bibliotek które będą. +Użyjemy do tego **pip3** - to narzędzie, którym pobieramy w pythonie potrzebne biblioteki. We fladze używamy dodatkowo pliku **requirements.txt**, który jest niczym innym jak listą nazw i wersji bibliotek, które będą wymagane dla poprawnego działania Twojego projektu. ``` pip3 install -r requirements.txt ``` #### 6. Dodanie domeny. -Zefiniuj zmienną w bashu np: +Zefiniuj zmienną w bashu, np.: ``` domena=nazwa_domeny.pl echo $domena @@ -406,18 +411,18 @@ sudo python3 pomocnicze_skrypty/xd.py $domena #### Restart nginxa i serwisów. To zadziało się automatycznie. Nie musisz tego robić. -To przyda Ci się za każdym razem, gdy po modyfikacji plików html lub programu app.py będziesz chciał zobaczyć zmiany na stronie. +To przyda Ci się za każdym razem, gdy – po modyfikacji plików html lub programu app.py – będziesz chciał zobaczyć zmiany na stronie. ``` sudo systemctl daemon-reload sudo systemctl restart nginx sudo systemctl restart flaga.service ``` -lub, jeżeli chcesz, napisałem skrypt który to robi za Ciebie. +lub, jeżeli chcesz, napisałem skrypt, który to robi za Ciebie. ``` sudo python3 pomocnicze_skrypty/reload.py ``` #### Gdyby coś poszło nie tak w kroku 6 i 7 -Użyj tej komendy a cofniesz się do początku kroku 6. +Użyj tej komendy, a cofniesz się do początku kroku 6. Jeżeli modyfikowałeś zmienną domena, wpisz: ``` @@ -436,20 +441,20 @@ Działa? Wyślij komuś, pochwal się komuś. ## 9: Flaga. -- Edytuj plik tekstowy którego treść widać na Twojej stronie. +- Edytuj plik tekstowy, którego treść widać na Twojej stronie. - Zobaczy czy na stronie jest nowa treść! - Stwórz nową zakładkę wymaganą do przejścia szturmu! - Zobacz czy zakładka działa :) -#### Edytuj plik tekstowy którego treść widać na Twojej stronie. +#### Edytuj plik tekstowy, którego treść widać na Twojej stronie. Urządź się tu :) Będąc dalej na serwerze, w folderze /var/www/flaga edytuj zawartość pliku xd.txt. Dodaj tam coś od siebie. Modyfikuj plik: ``` /var/www/flaga/dane/xd.txt ``` -#### Zobaczy czy na stronie jest nowa treść! +#### Zobacz, czy na stronie jest nowa treść! Zobacz na stronie www czy działa :) @@ -457,14 +462,14 @@ Zobacz na stronie www czy działa :) #### Stwórz nową zakładkę wymaganą do przejścia szturmu! -Ostatnie co zostało, to edycja zakładki /xd flagi. Twoja flaga aby przejść dalej musi spełniać 3 kryteria. -- być widoczna w sieci, czyli działać - to mamy -- w zakładce xd jest na niej "xD" - to też już mamy +Ostatnie co zostało, to edycja zakładki /xd flagi. Aby mógł/mogła przejść dalej, Twoja flaga musi spełniać 3 kryteria. +- być widoczna w sieci, czyli działać - to mamy; +- w zakładce xd jest na niej "xD" - to też już mamy; - w zakladce xd jest na niej coś napisane poza "xDDD" - to mamy do zrobienia. -Wejdź w przeglądarce na adres swojej strony www i dopisz **/xd** - to Twoja zakładka /xd. +Wejdź w przeglądarce na adres swojej strony www i dopisz **/xd** – to Twoja zakładka /xd. -Bedąc dalej w folderze /var/www/flaga edytuj plik templates/xd.html. Zobacz, jest tam w 12 linii "xDDD". Zostaw xD (z dowolną ilością "D") i: dodaj coś od siebie. Dzięki temu będzie można sprawdzić czy ukończyłeś ten etap. Otwórz: +Bedąc dalej w folderze /var/www/flaga edytuj plik templates/xd.html. Zobacz, jest tam w 12 linii "xDDD". Zostaw xD (z dowolną ilością "D") i dodaj coś od siebie. Dzięki temu będzie można sprawdzić, czy ukończyłeś ten etap. Otwórz: ``` /var/www/flaga/templates/xd.html ``` @@ -477,19 +482,19 @@ Przeładuj: sudo python3 pomocnicze_skrypty/reload.py ``` -#### Zobacz czy zakładka działa :) +#### Zobacz, czy zakładka działa :) -Zobacz na stronie www czy działa :) - dodaj do swojego adresu "/xd" czyli jak masz domenę "kubus-puchatek.pl" to wpisz "kubus-puchatek.pl/xd". +Zobacz na stronie www czy działa :) - dodaj do swojego adresu "/xd" czyli jak masz domenę "kubus-puchatek.pl", to wpisz "kubus-puchatek.pl/xd". #### Gotowe? -Możesz opuścić Terminal pisząć: +Możesz opuścić Terminal pisząc: -Najpierw aby się wylogować: +Najpierw, aby się wylogować: ``` exit ``` -Potem aby opuścić terminal: +Potem, aby opuścić terminal: ``` exit ``` diff --git a/pomocnicze_skrypty/create_swapfile_on_aws_ec2_server.sh b/pomocnicze_skrypty/create_swapfile_on_aws_ec2_server.sh new file mode 100755 index 00000000..9d7ed012 --- /dev/null +++ b/pomocnicze_skrypty/create_swapfile_on_aws_ec2_server.sh @@ -0,0 +1,76 @@ +#!/bin/bash +############################################################################## +# # Bash (watch out double square brackets!) script # +# # for create swapfile on AWS EC2 Ubuntu server # +# # Tested on Ubuntu 20.04 LTS (I'm sorry for my english) # +############################################################################## + +arg1=$1 +do_the_job='mkswapfile' +############################################################################## +# # Zmienna size określa wielkość pliku wymiany # size is swapfile size :) # +# # size=2G # +############################################################################## +size=1G +############################################################################## +# # For debugging purpose # +# #echo "\$0 to: $0" # +# #echo "\$1 to: $1" # +# #echo "\$2 to: $2" # +############################################################################## + +swapfile="/swapfile" + +############################################################################## +# Checking the swapfile is non-existing # I'm sorry for my english. Again :) # +############################################################################## +if [[ -e $swapfile ]]; then + echo "$swapfile exists!" +############################################################################## +## If swapfile is non exist, then check the argument1 is proper # +## For now only accepted argument is 'mkswapfile' - # +## empty argument or any other is equivalent of help (it shows commands # +## queue) # +## TODO: function check_free_disk_size() to determine free size on disk and # +# stop creating swapfile (or modify swapfile filesize) # +# # +# use something like: # +# df --output=avail / | tail -n 1 # +# # +# # +############################################################################## +elif [[ $do_the_job == $arg1 ]]; then + echo "Tworzę swapfile w pliku $swapfile" + if [[ -z $(swapon --show=NAME) ]]; then + fallocate -l $size /swapfile && # when fallocate is not installed, + # use: sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576 + chmod 600 $swapfile && + mkswap $swapfile + swapon $swapfile + if [[ -z $(grep 'swap' < /etc/fstab) ]]; then + echo -e "$swapfile\tswap\tswap\tdefaults\t0\t0" >> /etc/fstab + else + echo "Wpis odnoszący się do swap już istnieje w /etc/fstab. Skontroluj zawartość /etc/fstab i wyedytuj go samodzielnie." + fi + fi +############################################################################## +# # # +# # If argument1 is not valid show command queue # +# # (bottom list is sketch of steps to do) # +############################################################################## +else + if [[ -z $(swapon --show=NAME) ]]; then + echo "Jeżeli wywołasz skrypt z argumentem $do_the_job, to wykonam polecenia:" && + echo "fallocate -l $size /swapfile" && + echo "chmod 600 $swapfile" && + echo "mkswap $swapfile" + echo "swapon $swapfile" + echo "echo -e "$swapfile\tswap\tswap\tdefaults\t0\t0" >> /etc/fstab" + fi +fi +############################################################################## +# # # +# # Always show "swapon --show" #(•_ㅅ_•) # +# # # +############################################################################## +swapon --show