JAVA如何与路由器进行交互,如何访问和控制路由器的ACL?

Python011

JAVA如何与路由器进行交互,如何访问和控制路由器的ACL?,第1张

这个问题决定于路由器提供哪些访问方式(不考虑修改路由器内部系统的前提下)。

通常路由器提供的访问方式有web\ssh\telnet三种方式

ssh和telnet都是命令行模式输入指令,web则是通过uri传输指令

1、通过命令行。首先,java可以通过ssh模块或者普通的tcp做到访问路由器。然后携带用户密码通过路由器的认证。接下来,就是看路由器内部的命令行指令了。这种方法类似于用java写一个简单的tcp client端,并将特定的字符串通过tcp连接传给路由器。

2、通过web。假如你可以通过网页修改路由器的ACL,那么你用java同样可以。java有现成的模块模拟浏览器,浏览器的模式只不过是访问路由器的一个URL,然后post一串参数。你用java可以同样做到。

这两种模式都可以。后面在我看来更简单

1、从数据库读取数据放到js里面:

使用ajax来实现异步加载后台文件,返回数据到js文件中即可,参考代码:

$.ajax(

Method:'post',

URL:'xxx',

Data:{xxx},

success:function(data){

var database=data

}

)

2、将数据显示到页面:

参考:$("#cid").val(datas)

如果要通过路由器,不同的路由器的获取方法不一样。通用的做法是通过 HttpClient 在百度上搜索关键字 ip, 然后提取出公网ip。

代码如下:

import java.io.BufferedReader

import java.io.IOException

import java.io.InputStream

import java.io.InputStreamReader

import java.net.URL

import java.net.URLConnection

import java.util.regex.Matcher

import java.util.regex.Pattern

public class App {

// 获取网页源码

static String httpGet(String url) {

StringBuffer buffer = new StringBuffer()

try {

URLConnection conn = new URL(url).openConnection()

conn.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0 Win64 x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36")

try (InputStream inputStream = conn.getInputStream()

InputStreamReader streamReader = new InputStreamReader(inputStream)

BufferedReader reader = new BufferedReader(streamReader)) {

String line = null

while ((line = reader.readLine()) != null) {

buffer.append(line).append(System.lineSeparator())

}

}

} catch (IOException e) {

e.printStackTrace()

}

return buffer.toString()

}

public static void main(String[] args) {

String html = httpGet("https://www.baidu.com/s?wd=ip")

// 提出IP

Pattern pattern = Pattern.compile("<span\\sclass=\"c-gap-right\">本机IP:&nbsp([^<]+)</span>")

Matcher matcher = pattern.matcher(html)

if (matcher.find()) {

String ip = matcher.group(1)

System.out.println(ip)

}

}

}