用nodejs自创飞鱼星日志服务器记录日志
来源:互联网 发布:npm淘宝源 编辑:程序博客网 时间:2024/06/11 17:11
飞鱼星官方日志服务器为win软件,无法顺利在linux上运行,甚至在win7上运行也无法成功
废话少说,简单记录
0、选型:nodejs(dgram、mysql)、mysql、forever
1、安装nodejs、npm(win、linux),自行脑补
2、抓包udp,使用到了wireshark 下载地址https://1.na.dl.wireshark.org/win64/Wireshark-win64-2.2.4.exe
分析包内容 type1:4Byte,type2:4Byte,ip:32Byte,msg:剩余,端口:服务器20000,客户端2000
3、分析官方vls数据表结构得到基本元素(ip,type1,type2,msg)(最终没使用其官方表结构)
4、创建项目目录/path/to/vls,初始化项目,否则npm报错(win),npm init -f
5、npm安装dgram以处理UDP包npm install dgram -g
6、npm安装mysql以连接数据库npm install mysql -g
7、服务端代码后附
8、防火墙(如果有,请开放200000端口,请自行脑补)
9、安装forever npm install forever -g
10、创建自启动脚本/etc/init.d/vls并设置可执行权限,代码后附
11、启动service vls start
12、设置开机自启动chkconfig vls on
服务端代码
const dgram = require('dgram');const server = dgram.createSocket('udp4');const mysql = require('mysql');var conn = mysql.createConnection( {host:'localhost', user:'root', password:'', database:'vls', port:'3306'}//修改成自己的数据库信息);conn.connect();server.on('error', function(err) { console.log('server error:\n'+$err.stack); server.close();});server.on('message', function (msg, rinfo) { if(rinfo.address=='*.*.*.*' && rinfo.port=='2000'){//修改成设备ip var s1 = msg.slice(0,4); var s2 = msg.slice(4,8); var s3 = msg.slice(8,40); var s4 = msg.slice(40); conn.query('insert into test (ip,type1,type2,msg) values(?, ?, ?, ?)',[s3.toString().replace(/\s+$/g,""),s1.readInt32BE(0),s2.toString('hex'),s4.toString().replace(/\s+$/g,"")],function(error,results,fields){}); console.log('server got: %d from %s:%d',msg.length,rinfo.address,rinfo.port); }});server.on('listening', function() { var address = server.address(); console.log('server listening %s:%d',address.address,address.port);});server.on('close', function(msg) { console.log('server has been closed %s',msg);});server.bind(20000);
自启动脚本
#!/bin/bash## node Start up node server daemon## chkconfig: 345 85 15# description: Forever for Node.js#PATH=/usr/binDEAMON=/path/to/vls/vls.jsLOG=/var/log/vlsPID=/var/run/vls.pidcase "$1" in start) forever start -l $LOG/vls.log -o $LOG/vls_out.log -e $LOG/vls_err.log --pidFile $PID -a $DEAMON ;; stop) forever stop --pidFile $PID $DEAMON ;; stopall) forever stopall --pidFile $PID ;; restartall) forever restartall --pidFile $PID ;; reload|restart) forever restart -l $LOG/vls.log -o $LOG/vls_out.log -e $LOG/vls_err.log --pidFile $PID -a $DEAMON ;; list) forever list ;; *) echo "Usage: /etc.init.d/vls {start|stop|restart|reload|stopall|restartall|list}" exit 1 ;;esacexit 0
数据库(索引自己加)
create table vls (id bigint(20) auto_increment primary key, ip char(15) not null default '',type1 int(8) not null default 0,type2 binary(8) not null default '\0\0\0\0\0\0\0\0',msg char(576) not null default '',dateline timestamp not null default CURRENT_TIMESTAMP);
更深入的分析请自行脑补
0 0
- 用nodejs自创飞鱼星日志服务器记录日志
- nodejs日志记录
- 服务器记录日志
- nodejs日志
- xshell展示服务器记录日志
- weblogic服务器日志记录说明
- 用 aop 记录日志
- 使用redis将日志记录到日志服务器
- nodejs日志读取、日志查找、日志刷新
- php日志,记录日志
- 创建日志,记录日志
- 配置Linux安全日志记录服务器
- 服务器日志记录中查找黑客踪迹
- linux日志服务器审计客户端history记录
- 日志记录
- 日志记录
- 记录日志
- 日志记录
- canvas学习笔记
- 华为OJ——字符串最后一个单词的长度
- Excel表格取到的时间,在SQLServer中,格式化显示
- jQuery选择器 过滤选择器(四.属性过滤选择器)
- 计算机体系结构的分类
- 用nodejs自创飞鱼星日志服务器记录日志
- Zabbix使用总结
- 索引类型
- http握手详解
- WebApi 身份认证解决方案:Basic基础认证
- 混淆问题小计
- linux下用户管理和让用户获得root权限
- jquery判断滚动条到达底部
- Android System Server大纲之TelephonyRegistry