udhcpc 移植和使用

article/2025/10/15 21:55:25

问题描述: 

busybox udhcpc获取IP,但没有自动将获取到的ip设置到网卡上,并且没有自动设置网关,路由表等。必须手动设置才能连接外网。

解决方案:

udhcpc可以通过-s参数指定运行脚本,当获取到ip地址后,会自动运行这个脚本,从而自动将获取到的ip地址设置到网卡,并自动设置网关等。脚本的名字没有限制,busybox官网给的脚本如下:

default.script

#!/bin/sh
# udhcpc script edited by Tim Riker <Tim@Rikers.org>RESOLV_CONF="/etc/resolv.conf"[ -n "$1" ] || { echo "Error: should be called from udhcpc"; exit 1; }NETMASK=""
[ -n "$subnet" ] && NETMASK="netmask $subnet"
BROADCAST="broadcast +"
[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"case "$1" indeconfig)echo "Setting IP address 0.0.0.0 on $interface"busybox ifconfig $interface 0.0.0.0;;renew|bound)echo "Setting IP address $ip on $interface"busybox ifconfig $interface $ip $NETMASK $BROADCASTif [ -n "$router" ] ; thenecho "Deleting routers"while busybox route del default gw 0.0.0.0 dev $interface ; do:donemetric=0for i in $router ; doecho "Adding router $i"busybox route add default gw $i dev $interface metric $metric: $(( metric += 1 ))donefiecho "Recreating $RESOLV_CONF"# If the file is a symlink somewhere (like /etc/resolv.conf# pointing to /run/resolv.conf), make sure things work.realconf=$(readlink -f "$RESOLV_CONF" 2>/dev/null || echo "$RESOLV_CONF")tmpfile="$realconf-$$"> "$tmpfile"[ -n "$domain" ] && echo "search $domain" >> "$tmpfile"for i in $dns ; doecho " Adding DNS server $i"echo "nameserver $i" >> "$tmpfile"donebusybox mv "$tmpfile" "$realconf";;
esacexit 0

最终效果:

root@XXXX:/# busybox udhcpc -i ethsta0 -s /system/bin/default.script
udhcpc: started, v1.26.2
start script
udhcpc: sending discover
udhcpc: sending select for 192.168.247.217
udhcpc: lease of 192.168.247.217 obtained, lease time 3600
start script
start script
deleting routers
route: ioctl 890c: No such process
interface:ethsta0
domain:domain
dns:192.168.247.42
Error connecting (No such file or directory)
Error connecting (No such file or directory)root@XXXX:/ # ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=113 time=116 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=113 time=116 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=113 time=139 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 116.089/124.221/139.793/11.021 ms
root@XXXX:/ #

踩过的坑:

busybox udhcpc -s指定的这个脚本在指定解释器的时候,一定要确认解释器的路径是否正确

我从网络复制过来的脚本,因为我的解释器路径为“#!system//bin/sh”,而网络默认的解释器路径为“#!/bin/sh”。导致-s指定的脚本一直不运行。

ref:

【Linux应用】udhcpc命令获取到ip后,但是没有生效(没有设置进去)_看图的博客-CSDN博客_udhcpc 获取不到ip

WAN Ethernet : DHCP/Static/PPPoE - LiveWithACat - 博客园

udhcpc 移植和使用_sean_8180的博客-CSDN博客_udhcpc 移植

linux udhcpc 后无法自动设置网卡ip - 陈富林 - 博客园

嵌入式Linux:解决busybox udhcpc获取IP但没有设置系统DNS的问题_R-QWERT的博客-CSDN博客

udhcpc无法自动设置IP的问题-CSDN论坛


http://chatgpt.dhexx.cn/article/bjLnqUH2.shtml

相关文章

初始化ArrayList、List的两种方法

说明&#xff1a; 个人偏向第二种方法&#xff0c;适合没有服务器数据的情况下&#xff0c;做个简单的list来开发 方式一&#xff1a; ArrayList<String> list new ArrayList<String>();String str01 String("str01");String str02 String("str0…

Java 中初始化 List 集合的 6 种方式!

List 是 Java 开发中经常会使用的集合&#xff0c;你们知道有哪些方式可以初始化一个 List 吗&#xff1f;这其中不缺乏一些坑&#xff0c;今天栈长我给大家一一普及一下。 1、常规方式 List<String> languages new ArrayList<>(); languages.add("Java&qu…

java创建List时候 初始化赋值

在这之前 可能有的读者&#xff0c; 只知道数组初始化 时候的赋值。 String[] strings new String[]{"one","two","three"};当创建list时候&#xff0c;也许 你还会写过以下代码 正确的写法 List<String> list new ArrayList<>(…

初始化列表

前言 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _month;int _day; }; 虽然上述构造函数调…

Java 初始化 List 的几种方法

最常见的初始化 List 方法为&#xff1a; List<String> languages new ArrayList<>(); languages.add("Java"); languages.add("PHP"); languages.add("Python"); System.out.println(languages);但是实际上&#xff0c;我们并不会…

LIST集合初始化及常见方法

目录 1.ArrayList集合的初始化&#xff1a; 2.常用的List集合方法&#xff1a; 1.添加元素方法 2.查看&#xff08;遍历元素&#xff09;&#xff1a; 3.修改元素&#xff1a; 4.删除元素&#xff1a; 5.其他的常见方法&#xff1a; 1.ArrayList集合的初始化&#xff1a;…

微信小程序上传图片怎么限制大小

最近有一个微信小程序的项目&#xff0c;要求是上传多张图片&#xff0c;数量不能超过3张 &#xff0c;而且在php里因为上传图片被设置了只能上传2M&#xff0c;导致上传不成功&#xff0c;所以我在前端 设置一个函数&#xff0c;用了微信api(wx.chooseImage)获取图片&#xf…

微信小程序 import文件大小限制

微信小程序 import 引入外部文件 最大限制 超过 500k 时小程序会报错 当 import 引入的文件小于 500k 20200317补充: 后来有尝试了一下 echart ,发现引入的文件也大于500k,但是并没有出现报错, 我十分怀疑是json 的长度过长导致的, 如果有人知道是什么原因,希望不吝赐教.

【微信小程序】解决代码上传超过大小限制

问题描述 代码上传时失败&#xff0c;原因是大小超过限制 解决办法 一、图片等静态资源占用大&#xff0c;导致大小超限制 方法1&#xff1a;使用云开发提供的储存功能【推荐】 注意&#xff1a;要开通云开发功能&#xff0c;其次要在app.js中调用wx.cloud.init方法使用云开…

小程序分包Error: 分包大小超过限制,main package source

问题: 1、根据开发需求,项目基础模块开发完成后,在微信开发者工具上预览正常,点击"预览"的时候,提示分包大小超过限制。 如图: 上官网查了下,目前小程序分包大小有以下限制: 请参考:https://developers.weixin.qq.com/miniprogram/dev/framework/subpack…

uniapp下微信小程序超过2MB大小限制的解决方法

小程序开发者们看到这样的错误是不是很头疼&#xff1f; 我来总结一下解决这个问题的 方法 微信小程序超过2MB大小限制 1压缩静态文件大小2缩减大量重复的css代码3注释掉pages.json某些代码4程序分包5不要在uni.scss中引用样式&#xff01; 1压缩静态文件大小 举例&#xff0c…

小程序打包体积优化策略

背景 我们都知道微信小程序有包体积限制&#xff0c;整个小程序所有分包大小不超过 20M&#xff0c;单个分包/主包大小不能超过 2M。然而面对业务的不断更新迭代&#xff0c;代码和资源会越来越多&#xff0c;如果不尽早规划包体积的治理&#xff0c;势必有一天会对业务的发展…

【微信小程序】解决代码上传超过大小限制,小程序分包

微信小程序分包 小程序项目更新迭代&#xff0c;代码越来越大&#xff0c;超过了2M&#xff0c;小程序不能发布 快速解决方案&#xff0c;原来的页面跳转都不需要改&#xff0c;只需要改变app.json文件 原来app.json内容 {"pages": ["pages/ucenter/feedbac…

微信小程序页面数量限制问题

今天记录一下微信小程序关于页面栈不够用的解决方法&#xff0c;这个方法我是从小程序开发书中习得 1.问题 首先微信小程序中页面栈最多十层&#xff0c;也就意味着如果使用wx.navigateTo&#xff08;保留当前页面&#xff0c;跳转到应用内的某个页面&#xff09;方法&#x…

微信小程序获取头像昵称,限制头像大小

把用户的头像上传&#xff0c;限制在2M以内 代码 that.onChooseAvatar (e) > {console.log(onChooseAvatar2, e);const avatarUrl e.target.avatarUrl;let FileSystemManager wx.getFileSystemManager()FileSystemManager.getFileInfo({"filePath": avatarUr…

linux怎么限制文件大小,Linux文件系统文件大小限制

去阿里面试,被问到了Linux文件系统中文件大小的限制,当时就无语了。学操作系统时这些都是现算的,回来赶紧查一下。 以下为红帽ext3文件系统所支持的max file size和max filesystem size: ext3文件系统最大支持块数是2的32次方。块的大小可变,直接影响了文件系统的大小和文…

小程序包大小超过限制

uniapp&微信小程序主包/分包大小超过限制 一、开启分包1.在pages.json文件中配置分包2.在manifest.json文件中配置一下分包优化 二、以压缩方式运行1.在pages.json文件的顶部配置一条运行脚本(不清楚实际有没有生效)2.找到package.json文件 三、一些小建议1.一些图片文档之…

微信小程序文件大小限制

项目场景&#xff1a; 今天接着学习微信小程序&#xff0c;因为导入到项目的图片稍微多了一点&#xff0c;导致微信小程序无法编译&#xff0c;弹出以下错误。 经查找原因后才发现&#xff0c;原来微信小程序对每个小程序有大小限制&#xff0c;最多2M&#xff0c;进行分包后最…

socket中的函数遇见EINTR的处理

转载 &#xff1a; https://blog.csdn.net/benkaoya/article/details/17262053 http://blog.chinaunix.net/uid-21501855-id-4490453.html 这几天&#xff0c;写服务器代码过程当中&#xff0c;遇见EINRT信号的问题&#xff0c;我是借鉴 《unp 》&#xff0c;采用continue或者…

系统调用中断(EINTR)与SIGCHLD信号的处理

一、被中断的系统调用(EINTR)的理解 1. 慢系统调用是&#xff1f;2. 慢系统调用的类别3. EINTR产生的原因5. 一般处理方法 二、SIGCHLD信号的处理 1. SIGCHLD信号的产生2. SIGCHLD信号的处理3. 不处理SIGCHLD的后果 三、示例代码 一、被中断的系统调用(EINTR)的理解 1. 慢…