获取内网IP
前言
学校的上网是通过dr.com客户端(v6.0pppoe)版拨号上网,所以可以通过路由器pppoe的方式拨号上网,但是经常会重连,而且分配的ip是变化的,所以在图书馆或者实验室不好操作宿舍的电脑,所以通过这样的办法实时获取路由器wan口ip,顺便尝试一下koa2+react前后端分离的东西,同时顺便以后在树莓派上扩展aria2等工具。
依赖
- nodejs
- python
- nginx
- create-react-app koa2
- ssh2-utils或paramiko
ssh2-utils是js的一个ssh库,可以连接路由器的ssh获取wanip地址
源代码
- 文件夹和文件结构如图所示
- koa2
- controllers
- index.js
- app.js
- controller.js
- package.json
- controllers
- rasp
- public
- src
- package.json
- 进入koa2文件夹
npm install koa2 koa2-bodyparser koa2-cors koa-router ssh-utils
- koa2/App.js
const Koa = require('koa');//导入koa
const router = require('koa-router')();
const bodyParser = require('koa-bodyparser');
//创建一个Koa对象表示webapp
const app = new Koa();
const controller = require('./controller');
var cors = require('koa2-cors');
app.use(cors());
app.use(controller());
//监听3000端口
app.listen(5000);
console.log('app started at port 5000...');
- koa2/controller.js
const fs = require('fs');
function addMapping(router, mapping) {
for (var url in mapping) {
if (url.startsWith('GET ')) {
var path = url.substring(4);
router.get(path, mapping[url]);
console.log(`register URL mapping: GET ${path}`);
} else if (url.startsWith('POST ')) {
var path = url.substring(5);
router.post(path, mapping[url]);
console.log(`register URL mapping: POST ${path}`);
} else {
console.log(`invalid URL: ${url}`);
}
}
}
function addCo