ಫ್ಲಾಸ್ಕ್‌ನಲ್ಲಿ ಸಣ್ಣ ಹಿಂಬಾಗಿಲು ಅಥವಾ ಸ್ಥಳೀಯ ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಹೇಗೆ ನಿಯಂತ್ರಿಸುವುದು

ಹಲೋ, ಹಬ್ರ್!

"ಫ್ಲಾಸ್ಕ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಸ್ವಂತ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಹೇಗೆ ರಚಿಸುವುದು" ಎಂಬ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಸ್ಟ್ರೀಮ್‌ನ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ಆವೃತ್ತಿಯನ್ನು ನಾನು ಇತ್ತೀಚೆಗೆ ವೀಕ್ಷಿಸಿದ್ದೇನೆ. ಮತ್ತು ಕೆಲವು ಯೋಜನೆಯಲ್ಲಿ ನನ್ನ ಜ್ಞಾನವನ್ನು ಕ್ರೋಢೀಕರಿಸಲು ನಾನು ನಿರ್ಧರಿಸಿದೆ. ದೀರ್ಘಕಾಲದವರೆಗೆ ನಾನು ಏನು ಬರೆಯಬೇಕೆಂದು ತಿಳಿದಿರಲಿಲ್ಲ ಮತ್ತು ಕಲ್ಪನೆಯು ನನಗೆ ಬಂದಿತು: "ಫ್ಲಾಸ್ಕ್ನಲ್ಲಿ ಮಿನಿ-ಬಾಗಿಲನ್ನು ಏಕೆ ಮಾಡಬಾರದು?"

ಹಿಂಬಾಗಿಲಿನ ಅನುಷ್ಠಾನಗಳು ಮತ್ತು ಸಾಮರ್ಥ್ಯಗಳ ಮೊದಲ ಆಯ್ಕೆಗಳು ತಕ್ಷಣವೇ ನನ್ನ ತಲೆಯಲ್ಲಿ ಕಾಣಿಸಿಕೊಂಡವು. ಆದರೆ ಹಿಂಬಾಗಿಲಿನ ಸಾಮರ್ಥ್ಯಗಳ ಪಟ್ಟಿಯನ್ನು ತಕ್ಷಣವೇ ಮಾಡಲು ನಾನು ನಿರ್ಧರಿಸಿದೆ:

  1. ವೆಬ್‌ಸೈಟ್‌ಗಳನ್ನು ಹೇಗೆ ತೆರೆಯಬೇಕು ಎಂದು ತಿಳಿಯಿರಿ
  2. ಆಜ್ಞಾ ಸಾಲಿನ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರಿ
  3. ಕಾರ್ಯಕ್ರಮಗಳು, ಫೋಟೋಗಳು, ವೀಡಿಯೊಗಳನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ

ಆದ್ದರಿಂದ, ವೆಬ್ಬ್ರೌಸರ್ ಮಾಡ್ಯೂಲ್ ಬಳಸಿ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಮೊದಲ ಅಂಶವು ತುಂಬಾ ಸುಲಭವಾಗಿದೆ. ಓಎಸ್ ಮಾಡ್ಯೂಲ್ ಬಳಸಿ ಎರಡನೇ ಹಂತವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಾನು ನಿರ್ಧರಿಸಿದೆ. ಮತ್ತು ಮೂರನೆಯದು 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

ವಿವರಣೆಗಳು:

ಮೊದಲನೆಯದಾಗಿ, ವಿನಂತಿಗಳ ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳಲಾಗಿದೆ (ಸರ್ವರ್‌ನೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು). ಪ್ರಾರಂಭ ಮತ್ತು ಪರೀಕ್ಷಾ ಕಾರ್ಯಗಳ ವಿವರಣೆಯನ್ನು ಕೆಳಗೆ ನೀಡಲಾಗಿದೆ. ತದನಂತರ ಮ್ಯಾಜಿಕ್ ನಡೆಯುವ ಚಕ್ರ. ನೀವು ಕೋಡ್ ಅನ್ನು ಓದಿದ್ದೀರಾ? ಆದ್ದರಿಂದ ನೀವು ಚಕ್ರದಲ್ಲಿ ಸಂಭವಿಸುವ ಮ್ಯಾಜಿಕ್ನ ಅರ್ಥವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತೀರಿ. ಆಜ್ಞೆಯನ್ನು ನಮೂದಿಸಿ - ಅದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ. ಶೆಲ್ - ಆಜ್ಞಾ ಸಾಲಿನ ಆದೇಶಗಳು (ತರ್ಕವು ಪ್ರಮಾಣದಲ್ಲಿಲ್ಲ).

ಪರೀಕ್ಷೆ - ಸರ್ವರ್ ಚಾಲನೆಯಲ್ಲಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ (ಹಿಂಬಾಗಿಲು)
ಲಿಂಕ್ - "ಶಾರ್ಟ್‌ಕಟ್" ಬಳಕೆ
ಓಪನ್‌ವೆಬ್ - ವೆಬ್‌ಸೈಟ್ ತೆರೆಯುವುದು
ನಿರ್ಗಮಿಸಿ - ಕ್ಲೈಂಟ್ನಿಂದ ನಿರ್ಗಮಿಸಿ
ಹೊಂದಿಸಿ - ಸ್ಥಳೀಯ ನೆಟ್ವರ್ಕ್ನಲ್ಲಿ ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನ IP ಅನ್ನು ಹೊಂದಿಸಿ

ಮತ್ತು ಈಗ ಲಿಂಕ್ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು.

ಸರ್ವರ್ ಪಕ್ಕದಲ್ಲಿ link.txt ಫೈಲ್ ಇದೆ. ಇದು ಫೈಲ್‌ಗಳಿಗೆ (ವೀಡಿಯೊಗಳು, ಫೋಟೋಗಳು, ಪ್ರೋಗ್ರಾಂಗಳು) ಲಿಂಕ್‌ಗಳನ್ನು (ಪೂರ್ಣ ಮಾರ್ಗ) ಒಳಗೊಂಡಿದೆ.

ರಚನೆಯು ಹೀಗಿದೆ:

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

ಫಲಿತಾಂಶ

ಸ್ಥಳೀಯ ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ (ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ) ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ನಿಯಂತ್ರಿಸಲು ನಾವು ಬ್ಯಾಕ್‌ಡೋರ್ ಸರ್ವರ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ. ತಾಂತ್ರಿಕವಾಗಿ, ಪೈಥಾನ್ ಇಂಟರ್ಪ್ರಿಟರ್ ಹೊಂದಿರುವ ಯಾವುದೇ ಸಾಧನದಿಂದ ನಾವು ಕ್ಲೈಂಟ್ ಅನ್ನು ರನ್ ಮಾಡಬಹುದು.

PS I ಸೆಟ್ ಕಮಾಂಡ್ ಅನ್ನು ಸೇರಿಸಿದೆ ಆದ್ದರಿಂದ ಸ್ಥಳೀಯ ನೆಟ್ವರ್ಕ್ನಲ್ಲಿರುವ ಕಂಪ್ಯೂಟರ್ಗೆ ಬೇರೆ IP ಅನ್ನು ನಿಯೋಜಿಸಿದರೆ, ಅದನ್ನು ನೇರವಾಗಿ ಕ್ಲೈಂಟ್ನಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ