我正在尝试将python输出中的列表用于HTML表单的下拉菜单中。
我有一个内置HTML / CCS的网站,一个带有nodeJS的服务器以及一些我想在python3中使用的脚本。
我测试了多个丁字裤,但我无法使其正常工作。
我尝试放入一些Javascript,但无法从python脚本中获取信息
我尝试从nodeJS运行脚本,但是该脚本花费大量时间,因此无法正常工作。
这是我的app.js:
app.post("/getData", function (request, response) {
var IP = request.body.IP;
var user = request.body.user;
var password = request.body.password;
const testscript = exec('python getCPG.py ' + IP + user + password);
console.log("test1");
testscript.stdout.on('data', function (data) {
console.log("test2");
console.log(data);
// sendBackInfo();
});
//response.sendFile(path.join(__dirname + '/public/views/indexwithIP.html'));
//app.post("/LUNProvisionning", function (request, response) {
// console.log(request.body.serveur);
// console.log(request.body.volumetrie);
// console.log(request.body.type);
// response.sendFile(path.join(__dirname + '/public/views/index.html'));
//});
response.sendFile(path.join(__dirname + '/public/views/index.html'));
});
这是我的html表单:
<form action="/getData" method="post" name="getData">
<fieldset>
<legend>LUN Provisionning</legend>
<label>IP baie : </label>
<input name="IP" id="IP" required>
<br />
<label>user baie : </label>
<input type="text" placeholder="3paradm" name="user" id="userbaie" required>
<label>Password baie : </label>
<input type="password" name="password" id="PWbaie" required>
<br />
</fieldset>
</form>
这会将数据发送到运行python脚本的服务器。但是服务器需要太多时间才能获得答案。 然后,我将尝试将答案放入下拉列表中。我必须创建2个表单,否则使用JavaSscript并放置一个按钮将无法正常工作。
这是我的python脚本的输出:
SSD_r1
SSD_r5
SSD_r6
fs_cpg
CPG4S2
编辑“添加python脚本” 这是python脚本:
from hpe3parclient import client, exceptions
import sys
IPbaie = sys.argv[1]
userbaie = sys.argv[2]
pwbaie = sys.argv[3]
cl = client.HPE3ParClient("http://" + IPbaie + ":8008/api/v1")
cl.setSSHOptions(IPbaie, userbaie, pwbaie)
def getCPG():
#retourn une liste
temp = []
cpg = cl.getCPGs()
listcpg = cpg['members']
for x in listcpg:
temp.append(x.get('name'))
return(temp)
try:
cl.login(userbaie, pwbaie)
print("login successful.")
except exceptions.HTTPUnauthorized as ex:
print ("login failed.")
try:
listcpg = getCPG()
for x in listcpg:
print (x)
except exceptions.HTTPUnauthorized as ex:
print ("You must login first")
except Exception as ex:
print (ex)
cl.logout()
print ("logout worked")
谢谢
答案 0 :(得分:1)
根据https://www.npmjs.com/package/exec
child_process.execFile
已被弃用,如何使用exec
const {execFile} = require('child_process');
const testscript = execFile('python3', ['file_name.py', 'command_line_arg1', 'command_line_arg2', 'command_line_arg3'], (error, stdout, stderr) => {
if (error) throw error;
console.log(stdout);
})
这将打印python文件中的每个print
语句。因此,我建议您删除它们。
答案 1 :(得分:0)
我建议在您的服务器Python脚本之前放置一个API。这在前端和后端之间增加了一层抽象(这对安全性很有用)。您的javascript函数可以调用API端点,并检索输出。
关于python脚本的速度:不知道如何在不了解代码的情况下如何提供帮助。
答案 2 :(得分:0)
似乎脚本名称后应该有一个空格字符:
const testscript = exec('python getCPG.py ' + IP + user + password);