Python получает данные поста для вызова удаленного скрипта Python для отображения на странице - PullRequest
0 голосов
/ 29 июня 2018

Я довольно новичок в Python, так как я использовал PHP в прошлом. Я пытаюсь попрактиковаться в Python, преобразовав свой PHP-код в Python. У меня есть следующий php-код для получения данных POST от веб-сервера и вызова через ssh для вывода текстового файла удаленного сервера обратно на страницу.

app.js:

$(document).ready(function(){
$("button").on('click', function() {
    //call python script to generate report
     $.get("/", function(data){
        $( "#statusOutput" ).val(data);
    });
});
});

gettextoutput.php:

<?php //gettextoutput.php

    $user = 'user';
    $password = 'pass';
    $path = '/path/to/my/text/file';

    if ($_SERVER['REQUEST_METHOD'] == 'POST'){
        $hostname = $_POST['hostname']; //10.139.x.x
        $textoutput = file_get_contents("ftp://$user:$password@$hostname/$path");
        echo $textoutput; // I can use this to display the text output back to the page
    }
?>

Мне было интересно, есть ли способ сделать это и на python? Любая информация будет оценена!

1 Ответ

0 голосов
/ 29 июня 2018

Это должно помочь вам сделать это. используя Flask и FTPlib, которые вы должны установить. Это работает с сервером werkzeug (WSGI) из коробки, входящей в состав Flask.

#This answers makes a few assumptions | assumes a payload in json format | assumes Flask as framework | Assumes werkzeug as a WSGI server
from Flask import Flask, request, send_file
from ftplib import FTP                                                                      

app = Flask(__name__)

@app.route('/', methods['POST'])
def get_some_file():
    input = request.get_json()
    ftp = FTP("SOMESERVERFTPIP")                                                                               
    ftp.login(input['user'],input['password'])
#This will create local file and write contents of ftp file to it
    with open(/local/path/+input['path'], 'w') as f:
        ftp.retrbinary('RETR %s' % input['path'], f.write)

    #Filename should be a path, you may concatenate etc..
    return send_file('/local/path'/+input['filename'],
                     mimetype='text/txt',
                     attachment_filename='filename',
                     as_attachment=True)
...