2019独角兽企业重金招聘Python工程师标准>>>

最近在一个项目中用到了busybox,开始上网查找相关文档,把自己整理的资料在这里分享下。

1、busybox是什么?

Busybox:是一个集成了许多常用linux命令和工具的软件,可以用来做许多事,这里以项目中用例来说明。

2、安装busybox:

参考文档:http://www.cnblogs.com/xiaowenji/archive/2011/03/12/1982309.html。

3、使用busybox查看网络接口状态:

参数详解:

eth0:表示网卡一;

HWaddr:表示网卡的物理地址; inet addr:表示网卡的ip地址; Bcast:表示广播地址;Mask:掩码地址;

eth1:表示网卡二;

lo:表示localhoat,即127.0.0.1;

p2p0:表示网络接口,关于p2p0详情见:http://blog.csdn.net/mirkerson/article/details/38276629;

wlan0:表示无线网卡。

4、busybox在android项目中的使用:

在android项目中需要进行网口测试,即创建网桥实现局域网内互联,测试网口使用状况,结合实例代码说明如下:

 String[] net_set_cmds = new String[] { "busybox ifconfig", "busybox ifconfig eth0 up","busybox ifconfig eth1 up", "busybox brctl addbr br0", "busybox brctl addif br0 eth0","busybox brctl addif br0 eth1", "busybox ifconfig eth0 0.0.0.0","busybox ifconfig eth1 0.0.0.0","busybox ifconfig br0 192.168.88.2 netmask 255.255.255.0","busybox route add default gw 192.168.88.254", "busybox ifconfig" };String[] net_restore_cmds = new String[] { "busybox ifconfig", "busybox brctl delif br0 eth0","busybox brctl delif br0 eth1", "busybox ifconfig br0 down", "busybox brctl delbr br0","busybox ifconfig eth0 up", "busybox ifconfig eth1 up", "busybox ifconfig" };private void netSetting(final int step, final String[] cmd) {Log.i(TAG, "[netSetting].......................A");if (step < cmd.length) {handler.post(new MyRunnable(cmd[step], new MyOnCommandResultListener(step, cmd)));}Log.i(TAG, "[netSetting].......................C");}class MyOnCommandResultListener implements OnCommandResultListener {int step;String[] cmd;public MyOnCommandResultListener(int step, String[] cmd) {this.step = step;this.cmd = cmd;}@Overridepublic void onResult(String result) {netSetting(++step, cmd);}}class MyRunnable implements Runnable {String cmd;OnCommandResultListener linstener;public MyRunnable(String strcmd, OnCommandResultListener onCommandResultListener) {cmd = strcmd;linstener = onCommandResultListener;}@Overridepublic void run() {String result = CommonUtils.getInstance().executeCommand(cmd);if (linstener != null) {linstener.onResult(result);}}}

这里使用java代码实现了一个网桥的创建,主要看下其中的命令,net_set_cmds这个字符串数组是创建网桥的命令。

busybox ifconfig //会输出当前网络接口的情况
    busybox ifconfig eth0 up //启动eth0设备
    busybox ifconfig eth1 up //启动eth1设备
    busybox brctl addbr br0  //建立一个逻辑网段 delbr 删除网段  
    busybox brctl addif br0 eth0 //让eth0成为br0的一个端口
    busybox brctl addif br0 eth1 //让eth1成为br0的一个端口
    busybox ifconfig eth0 0.0.0.0 //网桥的每个物理网卡作为一个端口,运行于混杂模式,而且是在链路层工作,所以就不需要IP了。
    busybox ifconfig eth1 0.0.0.0 //
    busybox ifconfig br0 192.168.88.2 netmask 255.255.255.0 //给br0配置ip和子网掩码
    busybox route add default gw 192.168.88.254 //添加默认网关

调用netSetting(0, net_set_cmds)就可以实现网桥的创建,之后去ping相关ip查看是否ping通,就可检测网口状况。

当然也可以删除网桥,恢复网络状态,其中net_restore_cmds这个字符串数组就是删除网桥的命令。

busybox brctl delif br0 eth0 //从br0中删除eth0端口
    busybox brctl delif br0 eth1 //从br0中删除eth1端口
    busybox ifconfig br0 down //关闭逻辑网段br0
    busybox brctl delbr br0 //删除逻辑网段br0
    busybox ifconfig eth0 up //启动eth0设备
    busybox ifconfig eth1 up //启动eth1设备

值得注意的是:ifconfig 可以用来配置网络接口的IP地址、掩码、网关、物理地址等;用ifconfig 为网卡指定IP地址,这只是用来调试网络用的,并不会更改系统关于网卡的配置文件。如果您想把网络接口的IP地址固定下来,目前有三个方法:一是通过各个 发行和版本专用的工具来修改IP地址;二是直接修改网络接口的配置文件;三是修改特定的文件,加入ifconfig 指令来指定网卡的IP地址,比如在redhat或Fedora中,把ifconfig 的语名写入/etc/rc.d/rc.local文件中;

转载于:https://my.oschina.net/u/1999544/blog/314752

busybox在android开发中的应用相关推荐

  1. Android开发中应避免的重大错误

    by Varun Barad 由Varun Barad Android开发中应避免的重大错误 (Critical mistakes to avoid in Android development) A ...

  2. android 4.4 禁止下拉,Android开发中禁止下拉式的实现技巧

    我们开发项目的时候,经常会看到禁止的情况,而Android开发中并没有直接调用的接口,下面是爱站技术频道小编就给大家介绍的Android开发中禁止下拉式的实现技巧,希望网友们喜欢! 分享给大家供大家参 ...

  3. 史上最全Android开发中100%会用到的开源框架整理(1/5)

    其实这个开源框架整理很久了,只是一直放在有道云笔记里面,笔者还有很多写得文章都放在有道云笔记里面,有时间都好好整理一下放出来,本篇文章也会不定期更新,由于整理的开源框架分类都有200多个,所有这次只将 ...

  4. Android开发中使用七牛云存储进行图片上传下载

    Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储 ...

  5. 5 个 Android 开发中比较常见的内存泄漏问题及解决办法

    Android开发中,内存泄漏是比较常见的问题,有过一些Android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢? 在Android程序开发中,当一个对象已经不需要再 ...

  6. Android开发中的Handler和多线程

    在Android开发中我们常常用到Handler这个类去处理消息队列中的消息,以下这个例子实现的是利用Handler传递一个消息给线程,线程运行run()方法去更新进度条的进度,以下是源代码: pub ...

  7. 在 Android 开发中使用 Kotlin 协程 (一) -- 初识 Kotlin 协程

    前言 最近在研究 Kotlin 协程,发现功能真的超级强大,很有用,而且很好学,如果你正在或计划使用 Kotlin 开发 Android,那么 Kotlin 协程你一定不能错过! 协程是什么? 我们平 ...

  8. C/C++在Android开发中的应用

    JNI开发系列阅读 JNI与底层调用1:http://blog.csdn.net/axi295309066/article/details/60758515 JNI与底层调用2:http://blog ...

  9. android开发模式,Android开发中无处不在的设计模式

    Android开发中无处不在的设计模式――单例模式 Android开发中无处不在的设计模式――Builder模式 前面介绍了单例模式和Builder模式,有兴趣的见上面两个链接,这篇文章侧重介绍1下视 ...

最新文章

  1. DllMain中不当操作导致死锁问题的分析——DllMain中要谨慎写代码(完结篇)
  2. 【Linux】13.linux内核切换
  3. 安卓APP_ 布局(7) —— ViewPager翻页
  4. 红魔3电竞手机配置进一步曝光 电池容量不低于5000mAh
  5. 上海新中考体育考试方案公布:总分30分不变
  6. Silverlight 5 强袭 !! 圣临王者之三端大一统
  7. python改变默认编码
  8. SQL Server 2005利用分区对海量数据的处理
  9. 自动化测试项目实战训练【广州8月】
  10. Windows 7声卡驱动一键修复精灵3.0完美版(2009年11月9日发布)
  11. 使用 freessl.cn 为自己的静态netlify站点添加 https
  12. Python使用pyodbc访问数据库操作方法详解
  13. 使用cmd命令查看WiFi密码
  14. 【转】win7 uac关闭
  15. unity Animator 同时播放两个动画,并动态更换Animator中的AnimationClip
  16. C 语言中 求余运算 具体例子,C++中求余运算符(%)示例详解
  17. 细说Ansible主机清单inventory
  18. 大数据在职研究生哪个好_大数据在职研究生
  19. XYNUOJ Six Degrees of Separation
  20. open judge 1.7.18

热门文章

  1. android收费知乎,知乎 Android 端的一次重设计练习
  2. php 光速,PHP的光速教程
  3. windows powershell实战指南_【安全研究】powershell在主机中是否存在安全隐患?
  4. python两条曲线图片相似度_Python比较两个图片相似度的方法
  5. 浏览器无法打开摄像头
  6. html load方法的区别,jQuery  中的.load()、$get()、$,post()用法和区别
  7. axios 同步_githubactions进行github仓库和gitee仓库同步
  8. object-c html,object.html
  9. tf.ConfigProto()详解
  10. java分发器_SpringMVC核心分发器DispatcherServlet分析