User Tools

Site Tools


язык_программирования_python

This is an old revision of the document!


Язык программирования Python

Виртуальная среда Python

# apt install python3-venv

$ python3 -m venv ~/venv1

$ source ~/venv1/bin/activate

(venv1) $ which python
(venv1) $ which ansible

(venv1) $ deactivate

Web приложение

(venv1) :~$ pip install Flask

(venv1) :~$ mkdir -p pywebd/; cd $_

(venv1) :~/pywebd$ cat app.py
from flask import Flask, send_from_directory
import os
import configparser

app = Flask(__name__)

@app.route('/')
def index():
   return send_from_directory(pywebd_doc_root, 'index.html')

@app.route('/<path:path>')
def sendstuff(path):
        print(path)
        return send_from_directory(pywebd_doc_root, path)

if __name__ == "__main__":
    config = configparser.ConfigParser()
    config.read('/etc/pywebd/pywebd.conf')
#    pywebd_port = os.environ.get('PYWEBD_PORT',config['default']['Listen'])
#    pywebd_doc_root = os.environ.get('PYWEBD_DOC_ROOT',config['default']['DocumentRoot'])
    if 'PYWEBD_PORT' in os.environ:
      pywebd_port = os.environ.get('PYWEBD_PORT')
    else:
      pywebd_port = config['default']['Listen']
    if 'PYWEBD_DOC_ROOT' in os.environ:
      pywebd_doc_root = os.environ.get('PYWEBD_DOC_ROOT')
    else:
       pywebd_doc_root = config['default']['DocumentRoot']

    app.run(host="0.0.0.0", port=pywebd_port, debug=True)
#    app.run(ssl_context=('/etc/pywebd/pywebd.crt', '/etc/pywebd/pywebd.key'), debug=True, host='0.0.0.0', port=pywebd_port)
# mkdir -p /etc/pywebd/

# cat /etc/pywebd/pywebd.conf
[default]
DocumentRoot = /var/www/
Listen = 4080
# #cp /root/wild.crt /etc/pywebd/pywebd.crt
# #cp /root/wild.key /etc/pywebd/pywebd.key
(venv1) :~/pywebd$ #export PYWEBD_PORT=4443
(venv1) :~/pywebd$ #export PYWEBD_DOC_ROOT=/var/www/html/
(venv1) :~/pywebd$ #PYWEBD_PORT=4443 PYWEBD_DOC_ROOT=/var/www/html/ python app.py

(venv1) :~/pywebd$ python app.py

(venv1) :~/pywebd$ pip freeze | tee requirements.txt

CRUD Rest API приложение

Zabbix API приложение

(venv1) server:~# pip install requests

(venv1) server:~# cat zab_get_problem.py
import requests
import json

ZABBIX_API_URL = "http://127.0.0.1/zabbix/api_jsonrpc.php"
UNAME = "Admin"
PWORD = "zabbix"

r = requests.post(ZABBIX_API_URL,
                  json={
                      "jsonrpc": "2.0",
                      "method": "user.login",
                      "params": {
                          "username": UNAME,
                          "password": PWORD},
                      "id": 1
                  })

print(json.dumps(r.json(), indent=4, sort_keys=True))

AUTHTOKEN = r.json()["result"]

print(AUTHTOKEN)

# Retrieve a list of problems
print("\nRetrieve a list of problems")
r = requests.post(ZABBIX_API_URL,
                  headers={'Authorization': 'Bearer ' + AUTHTOKEN},
                  json={
                      "jsonrpc": "2.0",
                      "method": "problem.get",
                      "params": {},
                      "id": 2,
                  })

print(json.dumps(r.json(), indent=4, sort_keys=True))

#Logout user
print("\nLogout user")
r = requests.post(ZABBIX_API_URL,
                  headers={'Authorization': 'Bearer ' + AUTHTOKEN},
                  json={
                      "jsonrpc": "2.0",
                      "method": "user.logout",
                      "params": {},
                      "id": 2,
                  })

print(json.dumps(r.json(), indent=4, sort_keys=True))
(venv1) server:~# python3 zab_get_problem.py

Дополнительные материалы

Доступ к каталогу по http

dir$ python3 -m http.server 80
язык_программирования_python.1748098418.txt.gz · Last modified: 2025/05/24 17:53 by val