有这么一个需求,需要通过Android升级OpenWrt的固件(Firmware)。参考OpenWrt提供的升级方案,可以使用SSH的scp
命令将固件上传到路由器的/tmp目录下,然后执行命令sysupgrade -v /tmp/firmware_name.bin
升级固件。
Android中使用SSH
The SSH protocol uses encryption to secure the connection between a client and a server. All user authentication, commands, output, and file transfers are encrypted to protect against attacks in the network.
站在巨人的肩膀上,不要重复造轮子。Ganymed SSH-2是一个实现了SSH-2协议的Java库,解压ganymed-ssh2-build210.zip,将里面的jar包导入自己的Android项目的libs
目录下,并在Module的build.gradle文件中添加如下代码:
1 | dependencies { |
这个时候就可以在项目中愉快地使用SSH了。
升级固件
1 | public static boolean upgradeFirmware(String hostname, String username,String password ,String firmwarePath) { |
代码很简单,这里就不做过多解释了。但是升级固件并不一定会成功,如路由器的空间不足以存放新的固件时。