网页中实时查看服务器日志(websocket + node.js实现)

每当我需要查看linux服务器的日志时,我都需要通过SSH客户端访问,如果想让其他人也能查看日志,首先需要安装一个SSH客户端,然后设置连接信息,如果安全性高一点的,还需要额外在linux服务器上配置【查看日志用户】,表示权限仅限于查看日志。每增加一个人想查看日志,都需要重复这个步骤,并且大大降低了密码的私密性。

所以如果能通过网页形式提供【实时查看日志】功能,就可以很好地避免了这些问题。


需求模型:把整个过程看成三个节点,浏览器-node.js服务器-linux服务器,它们之间的通信过程如图显示:


浏览器端代码:

var host = '192.168.1.109';
var port = 8991;
var url = 'ws://' + host + ':' + port + '/';
var wsc = new WebSocket(url);

wsc.onopen = function () {
    console.log("Connection opened.");
};

wsc.onmessage = function (e) {
    console.log("Message received.");
};
wsc.onclose = function () {
    console.log("Connection closed.");
};


node.js端代码(require: einaros/ws + ssh2):

var WebSocketServer = require('ws').Server
    , wss = new WebSocketServer({ port: 8991 });
wss.on('connection', function connection(ws) {
    ws.on('message', function incoming(signal) {
        console.log('received: %s', signal);
        connectSsh(ws);
    });
    ws.on('close', function close() {
        console.log('disconnected')
    });
});
var Client = require('ssh2').Client;
function connectSsh(wsc) {
    var conn = new Client();
    conn.on('ready', function () {
        console.log('Client :: ready');
        conn.exec('tail /tmp/debug.log', function (err, stream) {
            if (err) throw err;
            stream.on('close', function (code, signal) {
                console.log('Stream :: close :: code: ' + code + ', signal: ' + signal);
                conn.end();
            }).on('data', function (data) {
                console.log('STDOUT: ' + data);
                wsc.send(data);
            }).stderr.on('data', function (data) {
                console.log('STDERR: ' + data);
            });
        });
    }).connect(
        { 
            host: '192.168.100.100', 
            port: 22, 
            username: 'frylock', 
            password: "pass"
            //privateKey: require('fs').readFileSync('/here/is/my/key') 
        });
    return conn;
}


 

类似这种开发、运维需求基本上可以用这种方式实现。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 微信小程序是腾讯公司开发的一种应用程序框架,旨在帮助开发人员快速构建自己的应用程序,并且能够方便地在微信生态环境进行推广和传播。Node.js是一种基于事件驱动、非阻塞I/O模型的服务器端JavaScript环境,可以方便地构建高效的网络应用程序。在这两个技术的结合下,我们可以构建出非常优秀的微信小程序,实现各种有趣、实用的功能。 使用Node.js开发微信小程序,我们可以方便地处理各种异步请求,包括网络请求、数据库请求等。同时,Node.js也提供了非常多的第三方库和模块,可以用来处理常用的任务,例如加密、压缩、日志记录等。这些库和模块,可以方便地在微信小程序进行调用,减少了我们开发过程的工作量。 微信小程序与Node.js的结合,也可以实现一些高端的功能,例如实现WebSocket协议进行即时通讯、使用WebRTC协议进行音视频通话等。这些功能,可以让我们的微信小程序变得更加有趣、实用,在用户获得更高的使用度和评价。 总而言之,微信小程序与Node.js的结合,可以帮助我们更快地构建出优秀的网络应用程序,同时也可以实现更多的功能,提升微信小程序的价值和竞争力。 ### 回答2: 微信小程序是一种可以在微信面运行的轻量级应用程序。而Node.js则是一种基于Chrome V8引擎的JavaScript运行环境,可以在服务器端运行JavaScript代码。 微信小程序使用JavaScript语言进行编程,在开发过程需要使用到Node.js的一些模块和工具,并且微信开发者工具也是基于Node.js开发的。例如,小程序开发需要用到的网络请求、文件读写、加密解密等功能,都可以通过Node.js提供的模块实现。同时,Node.js的工具包也可以为小程序的开发带来便利,例如Webpack和Babel可以帮助我们进行代码打包和转换,ESLint可以检测我们代码的潜在问题等等。 在小程序的开发Node.js也可以帮助我们实现一些复杂的业务逻辑。例如,我们可以使用Node.js开发一个服务端应用,用于提供小程序的数据接口、推送消息、定时任务等服务。这样的话,小程序的开发人员只需要调用这些服务的接口即可,而不必关心具体的实现细节。 总而言之,微信小程序和Node.js可以互相促进,在小程序的开发可以使用Node.js提供的工具和服务,来提升应用程序的性能和功能。 ### 回答3: 微信小程序开发是一项新兴的技术,而Node.js则是一种非常流行的后端开发技术。结合这两者可以实现更加强大的微信小程序开发。Node.js可以利用它强大的IO处理能力,为微信小程序提供后台服务,实现小程序业务逻辑的处理、数据的存储和管理等功能。同时,通过Node.js还可以进行与数据库的交互、实现数据的持久化等功能。此外,Node.js还拥有一些优秀的微信小程序开发框架,如WePY、mpvue等,这些框架可以快速地创建小程序,提高开发效率。 当我们使用Node.js进行微信小程序开发时,要注意一些小细节。首先需要了解微信小程序与Node.js的交互方式,可以使用微信小程序提供的API与Node.js进行通信,实现数据的传递。此外,还需要注意小程序的安全性问题,尤其是在与后台服务进行交互时,需要加强安全防护,避免出现信息泄露等安全问题。最后,还需要掌握一些微信小程序和Node.js的相关技术,如微信小程序开发规范、Node.js框架等。 总之,微信小程序和Node.js的结合可以为小程序提供更加丰富的功能和更加优秀的用户体验,具有非常广阔的发展前景,前景非常广阔。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值