Skip to content

PyPi - Pakete ein Sicherheitsproblem?

Python3
1 1 144
  • Beim Lesen diesen Beitrages bekomme ich ein ungutes Gefühl. Da man ja bei Python ständig externe Pakete importiert hier ein Beispiel

    ###############################################
    # Imports
    ###############################################
    
    import json
    import locale
    from pathlib import Path
    from functools import partial
    from dataclasses import dataclass
    
    from pywebio import start_server, config
    from pywebio.pin import put_input
    from pywebio.session import info as session_info
    from pywebio.output import put_text, \
        put_table, \
        use_scope, \
        scroll_to, \
        put_markdown, \
        put_buttons, \
        put_button, \
        clear, \
        put_info, \
        put_error, \
        put_html, \
        put_tabs, \
        toast, \
        put_image, \
        put_row, \
        put_grid, \
        put_loading
    from pywebio.input import input, \
        input_group, \
        NUMBER, \
        PASSWORD, \
        TEXT, \
        URL, \
        radio
    from pywebio_battery import popup_input
    import requests as requests  # Requests for making network connections.
    
    from bs4 import BeautifulSoup  # For extracting data from HTML and XML docs.
    

    Das ist mein Import für ein kleines neues Tool, wo ich mein Portfolio mit anzeigen möchte. Ein wenig Spielerei, aber spannend und ich lerne wieder was dabei.

    In diesem Artikel, stehen auch ein paar Pakete, die ich nutze 😟
    https://blog.phylum.io/phylum-discovers-revived-crypto-wallet-address-replacement-attack

    Ich habe dann mal in der Gruppe PyDDF "Python Meeting Düsseldorf" nachgefragt, wie die Lage ist. Einer der Tipps war dann, VMs bzw. Docker zu benutzen, das ermöglicht ja eine gewisse Trennung vom Haupt-System.

    Docker läuft sowieso, dann kann ich das ja mal ausprobieren. Nach vielem Rumprobieren habe ich jetzt aktuelle eine funktionierende Lösung.

    Im Projekt gibt es ein dockerfile

    FROM python:3.10
    # Or any preferred Python version.
    ADD main.py .
    RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y locales
    RUN sed -i -e 's/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/' /etc/locale.gen && \
        dpkg-reconfigure --frontend=noninteractive locales && \
        update-locale LANG=de_DE.UTF-8
    ENV LANG de_DE.UTF-8
    RUN pip install requests beautifulsoup4 pywebio pywebio_battery matplotlib
    CMD python ./main.py
    # Or enter the name of your unique directory and parameter set.
    

    Als nächstes brauchen wir mal folgendes

    docker build -t python-imagename .
    

    Danach dann starten mit

    docker run -d --rm --publish 7070:7070 --name portfolio python-imagename:latest
    

    Jetzt findet man die Anwendung wie gewohnt unter

    http://192.168.3.xxx:7070
    

    Die locales waren eine kleine Herausforderung, ich hoffe das passt jetzt so. Werde ich die Tage noch intensiver beobachten.

    Damit das Ganze halbwegs praktikabel ist, habe ich mir ein kleines Script geschrieben.

    scraping.sh

    #!/bin/bash
    ### BEGIN INIT INFO
    # Provides:          scraping
    # Required-Start:
    # Required-Stop:
    # Should-Start:
    # Default-Start:
    # Default-Stop:
    # Short-Description: scraping
    # Description:       scraping
    ### END INIT INFO
    
    case "$1" in
    stop)
        docker kill portfolio
        exit 0
            ;;
    
    start)
        #!/bin/bash
        cd /home/frankm/PycharmProjects/scraping/
        docker kill portfolio
        docker build -t python-portfolio .
        docker run -d --rm --publish 7070:7070 --name portfolio python-portfolio:latest
    
        exit 0
            ;;
    *)
            echo "Usage: basename $0 {start | stop}" >&2
            exit 64
            ;;
    esac
    exit 0
    

    Jetzt kann man nach einer Änderung am Code das Script schreiben. Der Docker Container wird gestoppt, falls er läuft. Danach wird das Image neu gebaut und dann gestartet.

    Zum Stoppen

    ./scraping.sh stop
    

    Zum Starten

    ./scraping.sh start
    

    Das kann man aber, in meinen Augen, nur mit fertigen Anwendungen machen. Wenn man entwickelt, braucht man ständig die Ausgaben auf der Konsole. Das fehlt einem ja dann im Container. Bin gespannt wie sich das weiter entwickelt.

    An die Docker Spezialisten draußen im Netz, wenn man das anders bzw. besser macht, bitte ich um einen Kommentar. Danke 😉

  • Flask Projekt auf einem anderen Rechner installieren

    Python3 python flask linux
    1
    0 Stimmen
    1 Beiträge
    196 Aufrufe
    Niemand hat geantwortet
  • PyWebIO vs. Flask

    Python3 pywebio flask linux python
    2
    0 Stimmen
    2 Beiträge
    272 Aufrufe
    FrankMF
    Mist, jetzt habe ich auch noch Streamlit gefunden. Jetzt geht mir langsam die Zeit aus...
  • Pycharm - Umzug auf neuen Rechner

    Linux pycharm linux python
    1
    0 Stimmen
    1 Beiträge
    136 Aufrufe
    Niemand hat geantwortet
  • Restic UI - Stand Januar 2023

    PyWebIO restic-ui pywebio python
    1
    0 Stimmen
    1 Beiträge
    162 Aufrufe
    Niemand hat geantwortet
  • Python - Frameworks

    Python3 python pywebio flet
    2
    0 Stimmen
    2 Beiträge
    207 Aufrufe
    FrankMF
    Und mal hier parken https://www.youtube.com/watch?v=Tucr8Ta-kq4&t=1911s
  • List comprehensions

    Python3 python
    1
    2
    0 Stimmen
    1 Beiträge
    112 Aufrufe
    Niemand hat geantwortet
  • Python - Match-Case Statement

    Python3 python
    1
    0 Stimmen
    1 Beiträge
    160 Aufrufe
    Niemand hat geantwortet
  • Docker - Portainer

    Linux docker portainer linux
    3
    6
    0 Stimmen
    3 Beiträge
    836 Aufrufe
    FrankMF
    Dann grabe ich das mal wieder aus Bedingt durch den Wegfall meines Proxmox, musste ich mir Gedanken darüber machen, wie ein paar Dienste auch weiterhin laufen sollen. Um mal die zwei wichtigsten zu nennen. checkmk DokuWiki Diese sollen später, wenn der zweite NanoPi R5S aus China da ist, dort laufen. Da der aber mit der Schneckenpost kommt, kann man ja in der Zwischenzeit mal wieder mit Docker spielen. Ich erinnerte mich daran, das checkmk eine sehr gute Anleitung hat, so das ich das mal wieder ausprobierte. Klappte einwandfrei. Dann erinnerte mich an Portainer und dachte mir, das probiere ich mal wieder aus [image: 1659859625137-1d2dc9b3-ad71-45c5-b552-72c88a1bf773-grafik.png] Ich hatte übrigens die Endpoints gesucht und nicht gefunden, die heißen jetzt Environments. Auf dem Bild ist noch keiner eingerichtet. [image: 1659859549311-4bdbf196-1b36-4e65-94d0-0e56daa473bf-grafik.png] Irgendwie ist das wirklich richtig gute Software. Ich mag den Portainer und auch als selbst ausgebildeter ITler kommt man damit sehr schnell ganz gut zurecht. Ja, man kann die ganzen Docker Befehle auch über die Konsole eingeben, was ich normalerweise auch mit ganz vielen Dingen mache, aber das macht hier einfach Spaß. Man hat auch schnell einen guten Überblick was wo läuft usw. Wer so was sucht, einfach mal ausprobieren. Klare Empfehlung von mir.