diff --git a/app.py b/app.py new file mode 100644 index 0000000..a2d0305 --- /dev/null +++ b/app.py @@ -0,0 +1,30 @@ +from flask import Flask, request + +app = Flask(__name__) + +data = {"username":"", "password":""} + +@app.route("/") +def get_(): + return data + +@app.route("/",methods = ['POST']) +def post(): + data_json=request.get_json() + if data_json is None: + return 'Invalid JSON data', 400 + + data['username']=data_json['username'] + data['password']=data_json['password'] + print(f"Data received {data_json}") + + return [data['username'], data['password']] + +@app.route("/", methods =['PUT']) +def put(): + str = request.args.get('password') + print(f"New password received {str}") + data['password'] = str + return [data['username'], data['password']] + +app.run(host='0.0.0.0', port=5000) diff --git a/configs/instA.sh b/configs/instA.sh new file mode 100644 index 0000000..6a18cb2 --- /dev/null +++ b/configs/instA.sh @@ -0,0 +1,40 @@ +#!/bin/bash +echo "Starting configuration for instance A" +ip link add macvlan1 link eth0 type macvlan mode bridge +ip address add dev macvlan1 192.168.16.10/24 +ip link set macvlan1 up +echo "Configuration ended" + +echo "Routing between A and C" +ip route add 192.168.11.0/24 via 192.168.16.1 + +echo "Installation of FLASK" +pip install flask + +echo "Creating web-server" +touch app.py + +cat << EOF > app.py +from flask import Flask, request + +app = Flask(__name__) + +@app.route("/") +def get_(): + return f"Hello, world!\n" + +@app.route("/", methods = ['POST']) +def post_(): + message = request.args.get('message') + return f"Message received: {message}\n" + +@app.route("/", methods = ['PUT']) +def put_(): + res = f"{request.args.get('message')} - by PUT\n" + return res + +app.run(host='0.0.0.0', port=5000) +EOF + +echo "Run server" +python app.py \ No newline at end of file diff --git a/configs/instB.sh b/configs/instB.sh new file mode 100644 index 0000000..b1519c4 --- /dev/null +++ b/configs/instB.sh @@ -0,0 +1,12 @@ +#!/bin/bash +echo "Configuring adapter for subnet A" +ip link add macvlan1 link eth0 type macvlan mode bridge +ip address add dev macvlan1 192.168.16.1/24 +ip link set macvlan1 up +echo "Configuration ended" + +echo "Configuring adapter for subnet C" +ip link add macvlan2 link eth0 type macvlan mode bridge +ip address add dev macvlan2 192.168.11.1/24 +ip link set macvlan2 up +echo "Configuration ended" \ No newline at end of file diff --git a/configs/instC.sh b/configs/instC.sh new file mode 100644 index 0000000..f2ed773 --- /dev/null +++ b/configs/instC.sh @@ -0,0 +1,18 @@ +#!/bin/bash +echo "Starting configuration for instance C" +ip link add macvlan1 link eth0 type macvlan mode bridge +ip address add dev macvlan1 192.168.11.100/24 +ip link set macvlan1 up +echo "Configuration ended" + +echo "Routing between C and A" +ip route add 192.168.16.0/24 via 192.168.11.1 + +echo "GET-request" +curl "http://192.168.16.10:5000/" + +echo "POST-request" +curl -X POST "http://192.168.16.10:5000?message=Ensemble_Learning" + +echo "PUT-request" +curl -X PUT "http://192.168.16.10:5000?message=VirtualBOX" \ No newline at end of file diff --git a/images/scr_A_to_C.png b/images/scr_A_to_C.png new file mode 100644 index 0000000..1c10197 Binary files /dev/null and b/images/scr_A_to_C.png differ diff --git a/images/scr_AdaptA.png b/images/scr_AdaptA.png new file mode 100644 index 0000000..b3143d6 Binary files /dev/null and b/images/scr_AdaptA.png differ diff --git a/images/scr_AdaptB_1.png b/images/scr_AdaptB_1.png new file mode 100644 index 0000000..ed4987f Binary files /dev/null and b/images/scr_AdaptB_1.png differ diff --git a/images/scr_AdaptB_2.png b/images/scr_AdaptB_2.png new file mode 100644 index 0000000..abbff24 Binary files /dev/null and b/images/scr_AdaptB_2.png differ diff --git a/images/scr_AdaptC.png b/images/scr_AdaptC.png new file mode 100644 index 0000000..b755dd5 Binary files /dev/null and b/images/scr_AdaptC.png differ diff --git a/images/scr_App_run.png b/images/scr_App_run.png new file mode 100644 index 0000000..a7cc0bc Binary files /dev/null and b/images/scr_App_run.png differ diff --git a/images/scr_C_to_A.png b/images/scr_C_to_A.png new file mode 100644 index 0000000..4aafdf4 Binary files /dev/null and b/images/scr_C_to_A.png differ diff --git a/images/scr_Flask_inst.png b/images/scr_Flask_inst.png new file mode 100644 index 0000000..9405c78 Binary files /dev/null and b/images/scr_Flask_inst.png differ diff --git a/images/scr_GET.png b/images/scr_GET.png new file mode 100644 index 0000000..c6fc575 Binary files /dev/null and b/images/scr_GET.png differ diff --git a/images/scr_GET1.png b/images/scr_GET1.png new file mode 100644 index 0000000..4f9b7e5 Binary files /dev/null and b/images/scr_GET1.png differ diff --git a/images/scr_GET_log.png b/images/scr_GET_log.png new file mode 100644 index 0000000..f924dcf Binary files /dev/null and b/images/scr_GET_log.png differ diff --git a/images/scr_POST.png b/images/scr_POST.png new file mode 100644 index 0000000..253d8ed Binary files /dev/null and b/images/scr_POST.png differ diff --git a/images/scr_POST1.png b/images/scr_POST1.png new file mode 100644 index 0000000..00b1816 Binary files /dev/null and b/images/scr_POST1.png differ diff --git a/images/scr_POST_log.png b/images/scr_POST_log.png new file mode 100644 index 0000000..be469fd Binary files /dev/null and b/images/scr_POST_log.png differ diff --git a/images/scr_PUT.png b/images/scr_PUT.png new file mode 100644 index 0000000..681c85c Binary files /dev/null and b/images/scr_PUT.png differ diff --git a/images/scr_PUT1.png b/images/scr_PUT1.png new file mode 100644 index 0000000..1155e2b Binary files /dev/null and b/images/scr_PUT1.png differ diff --git a/images/scr_PUT_log.png b/images/scr_PUT_log.png new file mode 100644 index 0000000..17f4b28 Binary files /dev/null and b/images/scr_PUT_log.png differ diff --git a/images/scr_PWD.png b/images/scr_PWD.png new file mode 100644 index 0000000..976591e Binary files /dev/null and b/images/scr_PWD.png differ diff --git a/report.md b/report.md new file mode 100644 index 0000000..8a7919d --- /dev/null +++ b/report.md @@ -0,0 +1,253 @@ +# Отчет по работе с Линуксом + +## Создание контейнеров в Play-with-docker + +Работа выполнялась в Play-with-docker + +Для начала создадим три контейнера. Это можно сделать путём нажатия кнопки `ADD NEW INSTANCE`. + +Новодобавленные контейнеры в Play-with-docker выглядят вот так (см. рисунок 1) + +
+
+Рисунок 1 - Контейнеры в Play-With-Docker
+
+
+Рисунок 2 - Адаптер контейнер A
+
+
+Рисунок 3 - Адаптер контейнер С
+
+
+Рисунок 4 - Адаптер контейнер B
+
+
+Рисунок 5 - Адаптер контейнер B
+
+
+Рисунок 6 - Пинг с контейнера А в С
+
+
+Рисунок 7 - Пинг с контейнера С в А
+
+
+Рисунок 8 - Установка Flask
+
+
+Рисунок 9 - Запуск Flask сервера
+
+
+Рисунок 10 - Проверка работы GET запроса
+
+
+Рисунок 11 - Логи GET запроса
+
+
+Рисунок 12 - Проверка работы POST запроса
+
+
+Рисунок 13 - Логи POST запроса
+
+
+Рисунок 14 - Проверка работы PUT запроса
+
+
+Рисунок 15 - Логи PUT запроса
+