网页中实时查看服务器日志(websocket + node.js实现)
来源:互联网 发布:游戏开发中常用的算法 编辑:程序博客网 时间:2024/06/18 13:54
每当我需要查看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 0
- 网页中实时查看服务器日志(websocket + node.js实现)
- websocket 实现服务器日志实时反馈(linux 环境)
- html5 websocket + node.js 实现网页聊天室
- 基于 websocket 实现远程实时日志 在浏览器中查看设备的运行日志
- Node.js websocket 使用 socket.io库实现实时聊天室
- Node.js websocket 使用 socket.io库实现实时聊天室
- Node.js websocket 使用 socket.io库实现实时聊天室
- Node JS实现简单网页服务器
- WebSocket+Node.js 通讯及在 iPhone中 实现
- [转载]WebSocket+Node.js 通讯及在 iPhone中 实现
- 通过(Node Js||.Net)基于HTML5的WebSocket实现实时视频文字传输(上)
- 通过(Node Js||.Net)基于HTML5的WebSocket实现实时视频文字传输(上)
- 通过(Node Js||.Net)基于HTML5的WebSocket实现实时视频文字传输1
- 网页实时聊天之PHP实现websocket
- 网页实时聊天之PHP实现websocket
- 基于Node.js服务器的WebSocket Video
- 使用Node.js+Socket.IO搭建WebSocket实时应用
- 使用Node.js+Socket.IO搭建WebSocket实时应用
- python多线程编程
- CheckBox 失效,点击的时候没有选上
- vncserver configuration xstartup
- Matlab数据输出、、从MATLAB 以tcpip方式传输数据到 vvvv
- emacs 使用积累5.3 etags
- 网页中实时查看服务器日志(websocket + node.js实现)
- Search in Rotated Sorted Array II
- Codeforces Round #281 (Div. 2) C. Vasya and Basketball&D. Vasya and Chess
- JavaScript中清空数组的三种方式
- 52 emacs 使用积累8.3 常用命令 简略完整版本
- 技术团队的情绪与效率
- JAVA 使用相对路径读取文件
- emacs 使用积累11 .emacs
- hadoop 基本文件操作命令