2019年2月11日 星期一

Node.js 執行 Linux 指令

使用 Node.js 建立網頁,網頁可透過 Node.js 執行 Linux 上的指令。
網頁的部分,使用 Express 網頁框架。使用 9000 PORT


建立 Node.js 專案,防火牆開放網頁預計使用的 9000 PORT
npm init
npm install express --save
#防火牆
firewall-cmd --state
firewall-cmd --list-all --zone=public
firewall-cmd --permanent --zone=public --add-port=9000/tcp
firewall-cmd --reload


Node.js 程式內容
let express = require('express');
let app = express();
let router = express.Router();
let exec = require('child_process').exec;
let port = 9000;
//app.use(express.static(__dirname + '/public'));
//app.use('/img', express.static(__dirname + '/public/img'));

let header = '<!DOCTYPE html><html><head><title>ctrl PHP</title>'
        + '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'
        + '<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">'
        + '</head><body><pre>';
let footer = "</pre></body></html>";

router.get('/', function (req, res, next) {
    //預設頁面
    console.log('index');
    res.sendfile('index.html', {root: __dirname + "/public"});
});
router.get('/ls', function (req, res, next) {
    //執行 ls -al 指令
    exec('ls -al', function (err, stdout, stderr) {
        console.log('ls');
        res.send(header + stdout + footer);
    });
});

app.use('/', router);
app.listen(port);



參考:
express nodejs execute ubuntu shell terminal command, ls, cat
Express.js 4.0 的路由(Router)功能用法教學 - G. T. Wang
node.js - simplest way to have Express serve a default page? - Stack Overflow
在 Express 中提供靜態檔案


沒有留言:

張貼留言