部署在防火墙设备的JAVA代理程序通过vtysh向防火墙设备发送指令,本地访问vtysh无需账号密码,只需输入vtysh命令即可,发送指令代码如下:
Runtime rt = Runtime.getRuntime();
String[] cmd = {"vtysh", "-c", "configure terminal\nzone zone1\nshow zone\nexit\n"};
Process process = rt.exec(cmd);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
更正:以上的方法如果指令过多容易造成底层设备IO异常,优化成以下方式
String[] cmdObj = new String[]{"/bin/sh", “-c”, "vtysh -c “configure terminal” -c “dpi” -c “dpi ipmac extra-area-ip enable” -c “dpi ipmac extra-area-ip action alert” -c “dpi reload-rules” -c end -c “write” "};