Я уже много раз упоминал про использование простейшего http сервера на базе python:
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Реклама ИП Скоромнов Д.А. ИНН 331403723315
# python3 -m http.server 8000
Я его постоянно использую, когда надо быстро откуда-то забрать файлы без лишних телодвижений. Просто перехожу в нужную директорию, запускаю веб сервер, скачиваю файлы, открыв их по ip адресу сервера и завершаю работу веб сервера.
Мне понадобилось для проверки одного приложения запустить https сервер, так как по http оно не работает. Было лень настраивать для этого Nginx. Подумал, что наверное его так же можно быстро поднять с помощью python. Быстро нашёл решение.
Генерируем самоподписанный ключ и сертификат в один файл:
# openssl req -new -x509 -keyout localhost.pem -out localhost.pem -days 365 -nodes
Создаём файл webserver.py следующего содержания:
import http.server, ssl server_address = ('172.20.0.210', 8000) httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler) httpd.socket = ssl.wrap_socket(httpd.socket,server_side=True,certfile='localhost.pem',ssl_version=ssl.PROTOCOL_TLSv1_2) httpd.serve_forever()
Запускаем веб сервер:
# python3 webserver.py
Идём по адресу https://172.20.0.210:8000 и видим содержимое директории или какой-то сайт, если в ней лежит index.html.
В принципе, можно сохранить этот файл и использовать для передачи файлов, если вам важно передавать по https. Я люблю такие простые и быстрые решения. Так что обязательно сохраню и буду использовать.
потому не работает, что питон со своими замахами - заменами... оно когда нибудь навернётся всё целиком. и не только питон. многие языки этим грешат. а за ними софт и операционки.
после
openssl req -new -x509 -keyout localhost.pem -out localhost.pem -days 365 -nodes
наличие и правильность сертификата ssl проверяйте
openssl x509 -in localhost.pem -noout -text
предпочтителен либо линукс, либо баш гитовский в виндовс, ну или ещё как
вар.1
import http.server
import ssl
HOST = 'localhost'
PORT = 4443
# Создаем сервер
handler = http.server.SimpleHTTPRequestHandler
httpd = http.server.HTTPServer((HOST, PORT), handler)
# Настраиваем SSL-контекст
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(certfile="localhost.pem")
# Оборачиваем сокет сервера в SSL
httpd.socket = context.wrap_socket(httpd.socket, server_side=True)
print(f"Serving on https://{HOST}:{PORT}")
httpd.serve_forever()
вар2
from http.server import HTTPServer, SimpleHTTPRequestHandler
import ssl
from pathlib import Path
port = 4443
httpd = HTTPServer(("localhost", port), SimpleHTTPRequestHandler)
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
ssl_context.load_cert_chain(Path(__file__).parent / "localhost.pem")
httpd.socket = ssl_context.wrap_socket(
httpd.socket,
server_side=True,
)
print(f"Serving on https://localhost:{port}")
httpd.serve_forever()
Классный гайд. Нихуя не работает
В Августе 2024 работало. Потом перестало =)