Reputation: 67
I have connection in hardware with console But it work's with commands:
I create omron.sh because I need to run it in a nodeJS
#!/bin/sh
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/splincode/Develop/omron/c++_modules/libomron/omron-build/lib/
~/Develop/omron/usr/local/bin/omron_790IT_test
But me need it's work in NodeJS and write to stream stdout, however, not work
server.js:
let http = require('http'),
fs = require('fs'),
url = require('url'),
path = require('path');
let server = new http.Server(); // EventEmitter
server.listen(8000, '127.0.0.1');
server.on("connection", () => console.log("connection"));
server.on('request', (request, response) => {
console.log('.', request.url)
let userUrl = decodeURIComponent(url.parse(request.url).pathname);
let loadFile = false;
switch(userUrl) {
case '/':
userUrl += 'index.html';
loadFile = true;
break;
case '/omron':
console.log('omron')
var util=require('util')
var exec=require('child_process').spawn('sh', ['omron.sh']);
// not work
exec.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
response.end(`${data}`);
});
break;
default:
loadFile = true;
break;
};
if (userUrl === '/') userUrl += 'index.html';
if (loadFile) {
let pathname = path.normalize(path.join(__dirname, userUrl));
fs.readFile(pathname, (err, content) => {
let mime = require('mime').lookup(pathname);
response.setHeader('Content-Type', `${mime}; charset=utf-8`);
response.end(content);
});
}
});
However, not work it, I need to give the shell-script a response to the output stream, but how?
Upvotes: 0
Views: 2715
Reputation: 59966
node-cmd
Simple commandline/terminal interface to allow you to run cli or
bash style commands as if you were in the terminal.
Run commands asynchronously, and if needed can get the output as a string.
so do some thing like this to solve your problem
var cmd=require('node-cmd');
cmd.get(
'pwd',
function(data){
console.log('the current working dir is : ',data)
}
);
cmd.run('whoami');
Upvotes: 2