-1

我可以使用什么方法登录 Cisco 或 Juniper 路由器?我知道我可以使用 telnet 连接到路由器本身,但我不知道 API 或任何允许我以非交互方式登录的东西。那么我该怎么做呢?

有没有我可以用来实现这一目标的库?

我见过人们使用脚本来实现诸如expect知道何时发送用户名和密码之类的事情。但这是针对 shell 脚本的。我怎样才能在java中做到这一点?我也希望严格保留在 java 中。

这样做的目的是允许 java 程序登录到路由器,这样我就可以查询路由器的接口状态并在路由器上执行命令。

有任何想法吗?

4

3 回答 3

2

你需要使用一些 Java 库来做同样的事情。http://www.pitman.co.za/projects/jssh/是一个很好的 Java SSH 客户端。http://commons.apache.org/proper/commons-net/有很好的 telnet 实现

于 2014-02-10T19:32:39.680 回答
0

至于提取信息,您应该可以通过使用 SNMP 查询路由器来完成。几乎所有东西都可以通过 SNMP 获得。现在,就命令执行而言,有 SNMP set 命令用于将信息“写入”到路由器,但您需要更仔细地研究,因为我怀疑完整的命令集是否可以替换为 SNMP set 命令。

对于 Cisco,找出您设备的 IOS 映像文件名,然后您可以在此处获取 MIB 文件:http ://tools.cisco.com/Support/SNMP/do/MIBSupport.do?local=en&step=3 。查看 MIB 文件,您将看到通过 SNMP 可用于该设备的内容。

您应该可以在他们的网站上为瞻博网络做类似的事情。

现在,我对 Java 了解不多,但我知道有可用的 SNMP 库(如http://www.snmp4j.org/)。

有了它,您将无需担心登录路由器或任何交互式内容。

于 2014-02-10T20:05:52.043 回答
0

请注意,对于 Cisco,通常使用 PC 上的串行端口直接连接到路由器上的服务端口。此连接使用称为 IOS 的编程协议。

使用它的最简单方法是使用一种称为expect. 此名称描述了您expect从端口获得提示然后做出响应的语言。发送该消息(您的回复),您expect会得到另一个回复,您会回复,ad completum-我的术语;)

请注意,此电缆是 Cisco 专有的,但我确信有可用的引脚。

最后,可以通过串行端口库在 java 上模拟这个程序。

于 2014-02-10T20:44:07.237 回答