douju3911
douju3911
2018-06-29 17:37

Python获取发布数据以调用远程python脚本以显示在页面上

已采纳

I am pretty new to python as I've been using PHP in the past. I am trying to practice python by converting my PHP code to python. I have the following php code to receive POST data from webserver and make a call over ssh to output a text file of a remote server back to the page.

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
    }
?>

I was wondering if there is a way to do this in python as well? Any information would be appreciated!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • douye2020 douye2020 3年前

    This should get you on the path to do it. using Flask and FTPlib that you must install. This works with a server named werkzeug (WSGI) out of the box included in 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)
    
    点赞 评论 复制链接分享

为你推荐