我正在尝试让sublist3r在节点应用程序中运行。但是,它运行时只显示横幅,然后在大约5秒钟后退出。该脚本应该可以访问web,运行大约需要30秒。如果我不使用承诺,它会很好地工作。它是否与pyrog.stdout.on('data')
在输出之前不等待有关?我读了很多书,尝试了{
在this article上尝试了一切,如果它不涉及编辑python脚本的话(我不认为我应该这么做?!)
还可以阅读Node.js Child Process,但它没有提到对spawn使用承诺,我相信这就是运行Python脚本所需要的
我使用的承诺是错误的吗
非常感谢您的帮助
编辑:添加了等待到runPy,验证了相同的问题。我们也尝试过将其变为变量,let test = await runPy ...
但没有成功
var express = require('express');
var router = express.Router();
let runPy = new Promise((success, nosuccess) => {
const {spawn} = require('child_process')
const pyprog = spawn('python',['/path/to/sublist3r.py', '-d', 'domain.com'] )
pyprog.stdout.on('data', (data) => {
success(data)
})
pyprog.stderr.on('data', (data) => {
nosuccess(data)
})
pyprog.on('close', (code) => {
console.log(`child process ended with ${code}`);
})
})
/* GET home page. */
router.get('/', async (req, res) => {
// EDIT: Added await and verified same issue.
await runPy.then(fromRunPy => {
console.log(fromRunPy.toString());
})
// It works fine below, but I want a promise for no other reason that I can't get it to work...
// const { spawn } = require('child_process');
// const pyProg = spawn('python', ['/home/wayne/BugHunterJS/controllers/Sublist3r/sublist3r.py', '-d', req.body.domain]);
// console.log('inside post');
// pyProg.stdout.on('data', function(data) {
// let sublist3rData = data.toString();
// console.log(sublist3rData);
// });
});
module.exports = router
在我询问之后不久,我发现了一个解决方案,如果有人在寻找的话。我还是不太确定它是怎么工作的,以后再弄清楚。我认为把它推到阵列是关键
相关问题 更多 >
编程相关推荐