Мала Π·Π°Π΄Π½Π° Π²Ρ€Π°Ρ‚Π° Π½Π° Flask ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π° ΠΌΡ€Π΅ΠΆΠ°

Π•Ρ˜ Π₯Π°Π±Ρ€!

НСодамна Π³Π»Π΅Π΄Π°Π² ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° програмскиот ΠΏΠΎΡ‚ΠΎΠΊ β€žΠšΠ°ΠΊΠΎ Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ сопствСна Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π²ΠΎ Flaskβ€œ. И Ρ€Π΅ΡˆΠΈΠ² Π΄Π° Π³ΠΎ консолидирам ΠΌΠΎΠ΅Ρ‚ΠΎ знаСњС Π²ΠΎ нСкој ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π”ΠΎΠ»Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π΅ Π·Π½Π°Π΅Π² ΡˆΡ‚ΠΎ Π΄Π° напишам ΠΈ ΠΌΠΈ дојдС ΠΈΠ΄Π΅Ρ˜Π°Ρ‚Π°: β€žΠ—ΠΎΡˆΡ‚ΠΎ Π΄Π° Π½Π΅ Π½Π°ΠΏΡ€Π°Π²Π°ΠΌ ΠΌΠΈΠ½ΠΈ-Π·Π°Π΄Π½Π° Π²Ρ€Π°Ρ‚Π° Π²ΠΎ Flask?β€œ

Π’ΠΎ ΠΌΠΎΡ˜Π°Ρ‚Π° Π³Π»Π°Π²Π° вСднаш сС појавија ΠΏΡ€Π²ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ моТности Π½Π° Π·Π°Π΄Π½Π° Π²Ρ€Π°Ρ‚Π°. Но, Ρ€Π΅ΡˆΠΈΠ² вСднаш Π΄Π° Π½Π°ΠΏΡ€Π°Π²Π°ΠΌ список со моТности Π·Π° Π·Π°Π΄Π½Π° Π²Ρ€Π°Ρ‚Π°:

  1. Π—Π½Π°Ρ˜Ρ‚Π΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΎΡ‚Π²ΠΎΡ€Π°Ρ‚Π΅ Π²Π΅Π±-страници
  2. Π˜ΠΌΠ°Ρ˜Ρ‚Π΅ пристап Π΄ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ‚Π° линија
  3. Π‘ΠΈΠ΄Π΅Ρ‚Π΅ Π²ΠΎ моТност Π΄Π° ΠΎΡ‚Π²ΠΎΡ€Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, Π²ΠΈΠ΄Π΅Π°

Π—Π½Π°Ρ‡ΠΈ, ΠΏΡ€Π²Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π΅ исклучитСлно лСсна Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚ Π·Π° Π²Π΅Π±-прСлистувач. РСшив Π΄Π° ја спровСдам Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚ OS. И Ρ‚Ρ€Π΅Ρ‚ΠΈΠΎΡ‚ Π΅ исто Ρ‚Π°ΠΊΠ° ΠΏΡ€Π΅ΠΊΡƒ OS ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚, Π½ΠΎ ќС користам β€žΠ»ΠΈΠ½ΠΊΠΎΠ²ΠΈβ€œ (повСќС Π·Π° Ρ‚ΠΎΠ° ΠΏΠΎΠ΄ΠΎΡ†Π½Π°).

ΠŸΠΈΡˆΡƒΠ²Π°ΡšΠ΅ сСрвСр

Π—Π½Π°Ρ‡ΠΈ, *drumroll* Ρ†Π΅Π»ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π° сСрвСрот:

from flask import Flask, request
import webbrowser
import os
import re

app = Flask(__name__)
@app.route('/mycomp', methods=['POST'])
def hell():
    json_string = request.json
    if json_string['command'] == 'test':
        return 'The server is running and waiting for commands...'
    if json_string['command'] == 'openweb':
        webbrowser.open(url='https://www.'+json_string['data'], new=0)
        return 'Site opening ' + json_string['data'] + '...'
    if json_string['command'] == 'shell':
        os.system(json_string['data'])
        return 'Command execution ' + json_string['data'] + '...'
    if json_string['command'] == 'link':
        links = open('links.txt', 'r')
        for i in range(int(json_string['data'])):
            link = links.readline()
        os.system(link.split('>')[0])
        return 'Launch ' + link.split('>')[1]
if __name__ == '__main__':
    app.run(host='0.0.0.0')

Π’Π΅ΡœΠ΅ Π³ΠΎ Ρ„Ρ€Π»ΠΈΠ² Ρ†Π΅Π»ΠΈΠΎΡ‚ ΠΊΠΎΠ΄, Π²Ρ€Π΅ΠΌΠ΅ Π΅ Π΄Π° ја објаснам ΡΡƒΡˆΡ‚ΠΈΠ½Π°Ρ‚Π°.

Π¦Π΅Π»ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ‚ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ Π½Π° ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° 5000. Π—Π° Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π°ΠΌΠ΅ со сСрвСрот, ΠΌΠΎΡ€Π° Π΄Π° испратимС Π±Π°Ρ€Π°ΡšΠ΅ Π·Π° JSON POST.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π½Π° Π±Π°Ρ€Π°ΡšΠ΅ JSON:

{β€˜command’:  β€˜comecommand’, β€˜data’: β€˜somedata’}

Па, ΠΈΠΌΠ° смисла Π΄Π΅ΠΊΠ° β€žΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°β€œ Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° ΡˆΡ‚ΠΎ сакамС Π΄Π° ја ΠΈΠ·Π²Ρ€ΡˆΠΈΠΌΠ΅. А 'ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ' сС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ‚Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Ρ‡Π½ΠΎ Π΄Π° ΠΏΠΈΡˆΡƒΠ²Π°Ρ‚Π΅ ΠΈ ΠΈΡΠΏΡ€Π°ΡœΠ°Ρ‚Π΅ JSON Π±Π°Ρ€Π°ΡšΠ° Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° со сСрвСрот (Π±Π°Ρ€Π°ΡšΠ°Ρ‚Π° ќС Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚). Или ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π·Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°.

ΠŸΠΈΡˆΡƒΠ²Π°ΡšΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚

Код:

import requests

logo = ['nn',
        '******      ********',
        '*******     *********',
        '**    **    **     **',
        '**    **    **     **      Written on Python',
        '*******     **     **',
        '********    **     **',
        '**     **   **     **      Author: ROBOTD4',
        '**     **   **     **',
        '**     **   **     **',
        '********    *********',
        '*******     ********',
        'nn']

p = ''
iport = '192.168.1.2:5000'
host = 'http://' + iport + '/mycomp'

def test():
    dict = {'command': 'test', 'data': 0}
    r = requests.post(host, json=dict)
    if r.status_code == 200:
        print (r.content.decode('utf-8'))

def start():
    for i in logo:
        print(i)

start()
test()

while True:
    command = input('>')
    if command == '':
        continue
    a = command.split()
    if command == 'test':
        dict = {'command': 'test', 'data': 0}
        r = requests.post(host, json=dict)
        if r.status_code == 200:
            print (r.content.decode('utf-8'))
    if a[0] == 'shell':
        for i in range(1, len(a)):
            p = p + a[i] + ' '
        dict = {'command': 'shell', 'data': p}
        r = requests.post(host, json=dict)
        if r.status_code == 200:
            print (r.content.decode('utf-8'))
        p = ''
    if a[0] == 'link':
        if len(a) > 1:
            dict = {'command': 'link', 'data': int(a[1])}
            r = requests.post(host, json=dict)
            if r.status_code == 200:
                print (r.content.decode('utf-8'))
        else:
            print('Комманда Π½Π΅ содСрТит Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²!')
    if a[0] == 'openweb':
            if len(a) > 1:
                dict = {'command': 'openweb', 'data': a[1]}
                r = requests.post(host, json=dict)
                if r.status_code == 200:
                    print (r.content.decode('utf-8'))
            else:
                print('Комманда Π½Π΅ содСрТит Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²!')
    if a[0] == 'set':
        if a[1] == 'host':
            ip = a[2] + ':5000'
    if command == 'quit':
        break

ΠžΠ±Ρ˜Π°ΡΠ½ΡƒΠ²Π°ΡšΠ°:

ΠŸΡ€Π΅Π΄ сè, ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚ Π·Π° Π±Π°Ρ€Π°ΡšΠ° сС ΡƒΠ²Π΅Π·ΡƒΠ²Π° (Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° со сСрвСрот). ΠŸΠΎΠ΄ΠΎΠ»Ρƒ сС Π΄Π°Π΄Π΅Π½ΠΈ описи Π½Π° стартнитС ΠΈ тСст Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅. А ΠΏΠΎΡ‚ΠΎΠ° циклусот Π²ΠΎ кој сС случува ΠΌΠ°Π³ΠΈΡ˜Π°Ρ‚Π°. Π”Π°Π»ΠΈ Π³ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π²Ρ‚Π΅ ΠΊΠΎΠ΄ΠΎΡ‚? Π’Π°ΠΊΠ° Π³ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠ°Π³ΠΈΡ˜Π°Ρ‚Π° ΡˆΡ‚ΠΎ сС случува Π²ΠΎ циклусот. ВнСсСтС ја ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° - Ρ‚Π°Π° Π΅ ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½Π°. Shell – ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ‚Π° линија (Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π΅ исклучСна ΠΎΠ΄ скалата).

ВСст - ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ сСрвСрот Ρ€Π°Π±ΠΎΡ‚ΠΈ (Π·Π°Π΄Π½Π° Π²Ρ€Π°Ρ‚Π°)
Врска - ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π½Π° β€žΠΊΡ€Π°Ρ‚Π΅Π½ΠΊΠ°β€œ
Openweb – ΠΎΡ‚Π²ΠΎΡ€Π°ΡšΠ΅ Π²Π΅Π±-страница
Π˜Π·Π»Π΅Π·Π΅Ρ‚Π΅ - ΠΈΠ·Π»Π΅Π·Π΅Ρ‚Π΅ ΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚
ΠŸΠΎΡΡ‚Π°Π²ΠΈ – ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° IP Π½Π° Π²Π°ΡˆΠΈΠΎΡ‚ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ°

И сСга повСќС Π·Π° врската.

Π”ΠΎ сСрвСрот ΠΈΠΌΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° link.txt. Π‘ΠΎΠ΄Ρ€ΠΆΠΈ врски (цСлосна ΠΏΠ°Ρ‚Π΅ΠΊΠ°) Π΄ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ (Π²ΠΈΠ΄Π΅Π°, Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ).

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π΅ Π²Π°ΠΊΠ°:

ΠΏΠΎΠ»Π½Ρ‹ΠΉ_ΠΏΡƒΡ‚ΡŒ>описаниС
ΠΏΠΎΠ»Π½Ρ‹ΠΉ_ΠΏΡƒΡ‚ΡŒ>описаниС

Π’ΠΊΡƒΠΏΠ½ΠΎ

ИмамС сСрвСр Π·Π° Π·Π°Π΄Π½Π° Π²Ρ€Π°Ρ‚Π° Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π° ΠΌΡ€Π΅ΠΆΠ° (Π²ΠΎ Wi-Fi ΠΌΡ€Π΅ΠΆΠ°). Π’Π΅Ρ…Π½ΠΈΡ‡ΠΊΠΈ, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·Π²Ρ€ΡˆΠΈΠΌΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ ΠΎΠ΄ кој Π±ΠΈΠ»ΠΎ ΡƒΡ€Π΅Π΄ ΡˆΡ‚ΠΎ ΠΈΠΌΠ° Ρ‚ΠΎΠ»ΠΊΡƒΠ²Π°Ρ‡ Π½Π° python.

П.Π‘. Ја Π΄ΠΎΠ΄Π°Π΄ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° set Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π°ΠΊΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΠΎΡ‚ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ° ΠΌΡƒ Π΅ Π΄ΠΎΠ΄Π΅Π»Π΅Π½Π° Π΄Ρ€ΡƒΠ³Π° IP адрСса, Ρ‚Π°Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС смСни Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π²ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€