精华内容
下载资源
问答
  • 用flask调用python脚本:最好的方法是什么?
    千次阅读
    2021-01-13 16:35:31

    我对Flask相当陌生,因此我对代码背后的逻辑以及我的思维过程是否有意义有疑问。

    我有一个旧的python脚本,该脚本需要大量数据,对其进行处理,然后使用matplotlib生成图。这很好。

    现在,我想构建一个Web应用程序,在该应用程序中,用户选择特定的输入参数,单击“提交”按钮,我的服务器(在sqlite的帮助下)检查是否已经存在绘图/使用这些参数进行绘图的数据,如果是的,然后使其可供用户下载。

    如果该图/数据不存在,我的flask应用程序将调用我的python脚本,并将为其创建新的图/数据,并将其上载到sqlite,然后用户可以从Web应用程序下载它。

    到目前为止,您可以在我的代码中看到python脚本是一个外部脚本,我的计划是不从我的flask应用程序的视图中包含该脚本,这有意义吗?我应该在这里调用外部脚本还是直接将代码复制到我的视图中?(到目前为止,我想避免使用它,因为这是一个很大的脚本)

    到目前为止,我的逻辑看起来像这样:

    # this part works well so far, I get the user input here and redirect it to the specific page

    @app.route('/plot', methods = ['GET','POST'])

    def get_plot():

    if request.method == 'POST':

    input1 = request.form['input1']

    input2 = request.form['input2']

    input3 = request.form['input3']

    return redirect('plot/{}/{}/{}/'.format(input1, input2, input3))

    else:

    return render_template('plot.html')

    # here it get's a bit tricky for me

    @app.route('/plot')

    def create_plot(input1='1', input2='2', input3='3'):

    try:

    db = get_db(DB_PLOT)

    cur = db.execute('SELECT * FROM {} WHERE param1 = {} AND param2={}'.format(input1, input2, input3)) # get all the data from the table

    except:

    return "Plot not found !"

    # CALL THE EXTERNAL PYTHON SCRIPT HERE?

    cur = db.execute('SELECT * FROM {} WHERE param1 = {} AND param2={}'.format(input1, input2, input3)) # python script should have updated the database, so i can call the data here

    data = cur.fetchall()

    return render_template('show_plot.html', data=data)

    此外,我还有另一个问题:就像我所说的那样,到目前为止,我只使用过自己的python脚本,它获取原始数据,对其进行处理,然后使用matplotlib创建一个图。当我想在我的Web应用程序中实现它时,是否仍应使用python脚本创建绘图,将绘图上传到sqlite,然后使用Web应用程序从sqlite获取图像,或者我应该仅上传操纵数据,然后下载来自sqlite的数据并创建烧瓶图?

    最后,我想让用户可以将图下载为.jpg和.pdf文件。

    非常感谢!

    解决方案

    您可以使用子流程模块来实现此目的。根据脚本生成绘图所需的时间,您应该考虑将页面返回给用户,要求用户在一段时间后刷新页面直到绘图可用(您也可以频繁使用javascript自动刷新)。花费太长时间的视图功能可能会成为问题,因为Flask用于处理请求的线程数量是有限的,如果太多用户同时生成图,这可能会使您的应用程序不可用。

    调用脚本之前返回显然不起作用。

    return "Plot not found !"

    # CALL THE EXTERNAL PYTHON SCRIPT HERE?

    在开始进行图生成之前,您还需要在数据库中插入一个条目,以便其他用户无法再次使用相同的参数运行脚本。

    您的except情况(当情节还不是数据库时)看起来像这样(可能很容易受到SQL注入的影响):

    # write entry to the database with parameters but without plot

    db.execute('INSERT INTO {} (param1, param2, param3) VALUES ({}, {}, {})'.format(table_name, input1, input2, input3))

    # start process which does it's calculations in another process and

    # updates the table we just inserted with the plot when finished

    p = Popen(['/path/to/script.py', input1, input2, input3], stdin=None, stdout=None, stderr=None, close_fds=True)

    return "Plot is beeing generated ..., please refresh page until the plot is available"

    然后,生成绘图的脚本将按以下方式更新条目(可能容易受到SQL注入的攻击):

    db.execute('UPDATE {} SET plot_blob = {} WHERE param1 = {} AND param2 = {} AND param3 = {}'.format(table_name, binary_image_data, input1, input2, input3))

    笔记:

    您可以构建url_for更整洁的URL:

    return redirect(url_for('create_plot', input1=input1, input2=input2, input3=input3))

    尽管您使用的库可能会处理此问题,但是您的SQL查询可能容易受到SQL注入的攻击。不知道是哪个

    更多相关内容
  • Shell脚本切换root用户获取root权限

    千次阅读 2022-03-09 16:06:53
    需求:Shell脚本不能通过root用户执行,只能通过普通用户执行。但是脚本中的某些命令需要时root权限。 想法:在执行需要root权限的命令时切换到root用户 或者 拿到root权限。 切换root用户 1、安装expect yum ...

    前言

    需求:Shell脚本不能通过root用户执行,只能通过普通用户执行。但是脚本中的某些命令需要时root权限。

    想法:在执行需要root权限的命令时切换到root用户 或者 拿到root权限。

    一、切换root用户的脚本

    1、安装expect

    yum install -y expect

    expect 的用法参考这篇文章:

     Linux expect 介绍和用法 - 梦徒 - 博客园 (cnblogs.com)https://www.cnblogs.com/saneri/p/10819348.html

    2、编写脚本

    ## switchRoot.sh 脚本内容
    
    #!/usr/bin/expect
    ## 只有先进入expect环境后才可执行spawn
    
    ## 不论是在此脚本内自动输入密码还是在脚本外手工输入密码,至少要等待1秒
    set timeout 1
    
    ## 切换root用户
    spawn su root
    
    ## 判断上述进程(su kevin)的输出结果中是否有“Password”的字符串(不区分大小写)。
    ## 若有则立即返回,否则就等待一段时间后返回,等待时长就是开头设置的1秒
    expect "Password:"
    
    ## 向上面的进程(su kevin)发送字符串中的密码, 并且自动敲Enter健(\r)
    send "root123456\r"
    
    interact
    

    3、效果

     4、问题

    当你在执行一个Shell脚本时,为了获取root权限而切换root用户时,会导致脚本中止。这显然不是我们想要的,因此我们可以选择使用 sudo 命令来临时获取root 权限。

    二、获取root权限(sudo)的脚本

    ## sudoUser.sh 脚本内容
    
    #!/usr/bin/expect
    set timeout 1
    ## sudo命令会返回的提示信息的一部分
    expect "password for"
    ## 当前用户的密码
    send "dhj123456\r"
    interact
    

    注意:并非所有用户都能使用sudo命令。 

    具体参考这篇文章:(4条消息) 解决linux下sudo更改文件权限报错xxxis not in the sudoers file. This incident will be reported._心之所向,一如既往-CSDN博客https://blog.csdn.net/sinat_36118270/article/details/62899093

    三、测试效果

    新建test.sh脚本,内容如下:

    #!/bin/bash
    
    echo "-------------- start."
    ## 打印root用户home目录的abc.txt文件
    ## 这个文件只有root能查看和修改,其他用户需要通过sudo来暂时获取root权限
    sudo cat /root/abc.txt
    ## 调用暂时获取root权限的脚本
    ./sudoUser.sh
    echo "------------ end."
    exit
    

    效果

    参考文章:

    (4条消息) 如何在linux shell脚本中自动输入密码._Tony_仔仔 的博客-CSDN博客_linux shell 输入密码https://blog.csdn.net/qq_31598113/article/details/80326973

    展开全文
  • Jenkins参数构建前调用脚本获取参数

    千次阅读 2020-12-14 10:09:35
    安装插件:Extended Choice Parameter Plug-In 1> 创建自由风格项目 2> 添加参数 3> 配置参数 ... 填写脚本,这里只支持Groovy语言 ...思路:用Groovy调用Shell脚本 5> 调用演示

    安装插件:Extended Choice Parameter Plug-In

    1> 创建自由风格项目

    2> 添加参数

    3> 配置参数

    4> 填写脚本,这里只支持Groovy语言

    思路:用Groovy调用Shell脚本

    5> 调用演示

    展开全文
  • 通过PYTHON自动获取RTX上的用户列表,然后调用群发脚本发送通知给用户
  • Linux Shell 查找出运行该脚本用户

    千次阅读 2021-03-14 17:00:27
    需要空格,tab,新行以顺序排列,放置编辑器出现关于space-tab兼容性问题。...查找出运行该脚本用户 # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=

    需要空格,tab,新行以顺序排列,放置编辑器出现关于space-tab兼容性问题。如果调用_AS_PATH_WALK时IFS没有设置,将会通过将IFS设置为空值,关闭word splitting。

    1 as_nl='
    2 '
    3 IFS=" ""    $as_nl"
    

    查找出运行该脚本的用户

    # Find who we are.  Look in the path if we contain no directory separator.
    case $0 in
      *[\\/]* ) as_myself=$0 ;;
      *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
    for as_dir in $PATH
    do
      IFS=$as_save_IFS
      test -z "$as_dir" && as_dir=.
      test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
    done
    IFS=$as_save_IFS
    
         ;;
    esac
    

    $0当前脚本的文件名

    如果没有发现用户,可能是通过sh COMMAND运行的

    if test "x$as_myself" = x; then
      as_myself=$0
    fi
    if test ! -f "$as_myself"; then
      echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
      { (exit 1); exit 1; }
    fi
    
    展开全文
  • ScriptControl接口 属性名称 类型 备注 ...检测是否允许运行用户的接口元素。如果为False,则诸如消息框之类的界面元素不可见。...设置或获取脚本引擎解释的语言,例如:VBScript、JScript。 Name String 脚本引
  • Shell脚本调用阿里云API实现DDNS动态域名解析

    千次阅读 热门讨论 2020-05-16 22:31:19
    为此,想通过编写一个Shell脚本,定期通过互联网服务获取当前机器所在网络的IP地址,并将新的IP地址通过阿里云提供的API,更新到对应的域名解析记录。 申请AccessKey 登陆阿里云官网,在控制台的右上角,将鼠标移动...
  • EBS获取用户的密码.zip

    2020-07-31 10:12:23
    包括一个package和一段sql脚本,package的作用是将Oracle EBS后台表中存储为密文的密码解密,sql脚本调用了package,将用户名填写入条件中即可获取密码
  • 【Jenkins学习 】如何编写Python脚本调用企业微信的api通知企业微信成员关于Jenkins的编译结果? https://blog.csdn.net/qq446282412/article/details/86361318 但是并不是每台Linux服务器上都有合适的python...
  • python--python脚本调用shell命令

    千次阅读 2019-09-03 09:35:39
    文章目录python脚本调用shell命令os.system()os.popen()subprocess.call()subprocess.Popen()commands 参考: python脚本调用shell命令 os.system() os.system()执行成功会自动返回值0,执行的shell命令结果会打印...
  • Java调用R脚本的方法总结

    千次阅读 2018-08-01 18:56:07
    实际中有这样一种场景:算法工程师用R搭建了机器学习算法模型,想用于javaweb之中但是又不想重新用java写一遍算法模型,那么可以考虑java程序中直接调用R的脚本。JAVA负责系统的构建,R用来做运算引擎,从而实现应用...
  • Hive调用python脚本

    千次阅读 2018-12-06 11:04:29
    Hive的 TRANSFORM 关键字提供了在SQL中调用自写脚本的功能,本实例通过python脚本对电影数据进行清洗,帮助读者了解hive调用python脚本的整个流程。 操作步骤: 1、创建基表 CREATE TABLE u_data ( userid INT,...
  • Java调用shell脚本

    万次阅读 多人点赞 2018-06-28 18:08:02
    也许在某种情况下,Java程序需要调用shell脚本才能完成,比如为了从其他服务器上下载一些文件,但是却不能使用普通的sftp代码完成,需要使用到证书,这时shell脚本就比较方便 在这里我写了一个工具类,是为了调用...
  • shell脚本如何获取当前时间(转)

    千次阅读 2021-05-12 10:23:52
    在shell脚本里常常需要获取系统时间来处理某项操作,今天系统的学习了一下如何获取系统时间。记录如下:Linux的系统时间在shell里是可以直接调用系统变量的如:获取今天时期:`date +%Y%m%d` 或 `date +%F` 或 $...
  • 当在执行shell脚本时,它会启动一个叫子shell的进程。子shell进程的PID存储在一个特殊的变量‘$$'中。这个变量只读,不可以在脚本中修改它。例如: [test@node1 ~]$ cat test.sh #!/bin/bash echo "执行的文件: $0...
  • 2、搭建后端服务(flask轻便),编写服务端代码,封装脚本为接口调用方式,postman调试接口请求OK,达到预期效果。python实现。 注意事项:1)服务端的端口号不与前端 及平台的其他服务重复。 3、前后端联调。 方法...
  • 先将JS脚本(jiami.js)放入jmeter.bat所在的bin文件夹里 ...即可调用该js中的方法 这里举例,我传入的参数i要加密: 该JS中的加密方法是jiami.toBase64(); var jm = jiami.toBase64(${i}); vars.p...
  • LINUX SHELL脚本中获得用户主目录

    万次阅读 2019-04-03 07:33:14
    脚本中: echo ${HOME} C中: #include <stdlib.h> char *home_path = getenv("HOME"); printf("home_path=%s\n", home_path);
  • 脚本 observerReport.sh 里面调用 mergerReport.sh,observerReport.sh在script/目录, mergerReport.sh在下一级子目录script/merge里, 此时,如果mergerReport.sh里面用pwd生成路径,并不会是 script/merge,而是...
  • shell脚本获取当前日期和时间

    万次阅读 2019-03-22 19:21:06
    Linux的系统时间在shell里是可以直接调用系统变量的如: 获取今天时期:date +%Y%m%d 或 date +%F 或 $(date +%y%m%d) 命令输出结果如下: [root@centi-C sh]# date +%Y%m%d 20190322 [root@centi-C sh]# date +%F ...
  • 那么如何在root用户下写shell脚本调用oracle数据库并返回结果 只需要在你的shell脚本中加入下面的脚本即可! # 获取oracle环境变量并在root用户中生效(暂时) export ORACLE_HOME=$TY_ORACLE_HOME export LD_...
  • Linux 脚本内容指定用户执行

    千次阅读 2018-06-29 19:13:00
    ## 如果直接写在下面,则变量获取不到,并且下面的 $ 标识的都要用 引号引起来,否则这些参数接收不到 tarfile=$1 tarfile_name=${tarfile##*/} echo "$tarfile" echo "$tarfile_name" ## 切换用...
  • xShell终端调用VBS脚本 使用方法说明

    万次阅读 2016-07-28 16:05:47
    调用方法】  1、先编写 VBS 脚本。比如我们要让 xShell 在目标设备需要确认时自动输入 y ,可以像下面这样编写脚本: Sub main xsh.Screen.Synchronous = True ' 使窗口显示与当前输出同步 xsh.Screen....
  • 用浏览器的油猴子脚本调用IDM下载百度云盘中的资料(只能支持单个文件下载) 第一步需要现在浏览器中安装油猴子插件Tampermonkey.crx 安装油猴子插件插件主页:https://tampermonkey.netTampermonkey 是一款免费的...
  • 转载来源 :超实用的shell脚本–一键获取进程所有信息 :http://www.safebase.cn/article-257427-1.html 摘要: 概述有时我们想只是通过一个进程PID就可以输出该进程的相关信息,可以怎么处理呢?下面用shell脚本来...
  • ssh 远程执行脚本
  • JS元素获取和事件调用

    千次阅读 2018-07-13 02:13:27
    有时我们需要脚本用户提供反馈的信息。如创建一个弹出的警告窗口,提示用户重要信息。这是使用alert实现的,里面可以是数字或者字符串等 将alert逐行放置,如果alert未执行,说明上面的代码有错误。初学者应养成...
  • 这个模块支持在 python 脚本中直接调用服务器的 shell , 执行命令, 大爱: from subprocess import call # 获取当前环境的python解释器路径 import sys py_path = sys.executable # 在shell中执行字...
  • 本实例通过python脚本对电影数据进行清洗,帮助读者了解hive调用python脚本的整个流程。 操作步骤: 1、创建基表 CREATE TABLE u_data ( userid INT, //用户ID movieid INT, //电影ID rating INT, //电影...
  • 最近在做一个深度学习对图片中对象识别效果的检测工具,其...我们可以直接用qt的QProcess调用bash来执行运行脚本的命令,获取结果数据则有两种方式: 一是在python脚本中将结果写到文本中,脚本结束后由qt读取。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 279,546
精华内容 111,818
关键字:

获取脚本调用的用户