በፍላስክ ላይ ያለ ትንሽ የኋላ በር ወይም ኮምፒተርን በአካባቢያዊ አውታረመረብ እንዴት ማስተዳደር እንደሚቻል

ሃይ ሀብር!

በቅርቡ የወረደውን የፕሮግራሚንግ ዥረት አይቻለሁ እንዴት የእራስዎን የፍላስክ ድር መተግበሪያን መፍጠር እንደሚቻል። እና እውቀቴን በአንዳንድ ፕሮጀክቶች ውስጥ ለማጠናከር ወሰንኩ. ለረጅም ጊዜ ምን እንደምጽፍ አላውቅም ነበር እና ሀሳቡ ወደ እኔ መጣ፡ "ለምን ሚኒ-ጀርባ በር በፍላስክ ላይ አታደርግም?"

የኋለኛው በር የመጀመሪያ የአተገባበር ልዩነቶች እና እድሎች ወዲያውኑ በራሴ ውስጥ ታዩ። ግን ወዲያውኑ የኋለኛውን ባህሪዎች ዝርዝር ለማጠናቀር ወሰንኩ፡-

  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

ማብራሪያዎች ፦

የመጀመሪያው እርምጃ የጥያቄዎች ሞጁሉን ማስመጣት ነው (ከአገልጋዩ ጋር ለመገናኘት)። ስለ ጅምር እና የሙከራ ተግባራት ተጨማሪ መግለጫዎች። እና ከዚያም አስማት የሚከሰትበት ዑደት. ኮዱን አንብበዋል? ስለዚህ በዑደት ውስጥ የሚከሰተውን አስማት ትርጉም ተረድተሃል. ትዕዛዙን አስገባ - ተፈፅሟል. ሼል - ለትዕዛዝ መስመሩ ያዛል (ሎጂክ ከመጠኑ ይወጣል).

ሙከራ - አገልጋዩ እየሰራ መሆኑን ያረጋግጡ (የኋላ በር)
አገናኝ - የ "አቋራጭ" አጠቃቀም
ክፍት ድር - የጣቢያ መከፈት
አቁም - ከደንበኛው ውጣ
አዘጋጅ - በአካባቢያዊ አውታረመረብ ላይ የኮምፒተርዎን አይፒ ማቀናበር

እና አሁን ስለ ማገናኛ በበለጠ ዝርዝር.

ከአገልጋዩ ቀጥሎ link.txt ፋይል አለ። ወደ ፋይሎች (ቪዲዮ, ፎቶዎች, ፕሮግራሞች) አገናኞች (ሙሉ ዱካ) ይዟል.

አወቃቀሩ ይህን ይመስላል።

полный_путь>описание
полный_путь>описание

ውጤቱ

በአካባቢያዊ አውታረመረብ (በ wi-fi አውታረ መረብ ውስጥ) ኮምፒተርን ለማስተዳደር የኋላ በር አገልጋይ አለን ። በቴክኒክ ደረጃ ደንበኛውን ከማንኛውም መሳሪያ ፓይቶን አስተርጓሚ ካለው መሳሪያ ልናስኬደው እንችላለን።

PS የስብስብ ትዕዛዙን ጨምሬያለሁ ስለዚህ ሌላ ip በአካባቢያዊ አውታረመረብ ላይ ላለ ኮምፒተር ከተመደበ በቀጥታ በደንበኛው ውስጥ መለወጥ ይችላሉ።

ምንጭ: hab.com

አስተያየት ያክሉ