嵌入式设备的网络设置主要通过命令行来进行操作:
# MAC地址设置 ifconfig eth0 down ifconfig eth0 hw ether $MACADDR ifconfig eth0 up ifconfig eth0 $ip netmask $netmask # IP和子网掩码设置 route add default gw $gatewayip # 网关设置 ifconfig lo $localhost # 本机设置
通过编写脚本可以实现这些设置功能。脚本需要对输入进行详细的检测,以确保是有效的网络配置。
检测项目包括:

这些检测涉及到网络工程的基础知识,例如子网和网关的概念。
在计算机发送数据包时,数据链路层负责处理MAC(Media Access Control,媒体访问控制)地址,而IP地址则是网络层负责的。因此,需要使用ARP(Address Resolution Protocol,地址解析协议)来维护MAC地址与IP地址的对应关系。当发送数据包到某个IP地址时,计算机会从ARP表中查找对应的MAC地址。如果源IP和目标IP在同一个子网(通过与子网掩码进行与操作后结果相同),则直接发送数据包;如果不在同一个子网,则将数据包发送到网关IP对应的设备,由路由器转发。
IP地址由4段8位的二进制数组成,每段范围从0到255。
子网掩码由32位二进制数表示,其中高位必须是连续的1,低位必须是连续的0。子网掩码用于区分网络地址部分和主机地址部分。例如,子网掩码255.255.192.0在二进制表示为11111111 11111111 11000000 00000000,能够容纳的主机数为2^14 - 1 = 16383。
子网掩码255.255.255.254表示只有一个主机,这也是检测时的一个规则。
同一子网内的设备使用相同的网关,这可以通过IP地址与子网掩码进行与操作来验证,即(IP & netmask) == (GW & netmask)。
IP冲突检测可以通过ping和arp命令来实现:
系统特点:功能简洁实用。目前互联网上最简洁的企业网站建设系统!原创程序代码。非网络一般下载后修改的代码。更安全。速度快!界面模版分离。原创的分离思路,完全不同于其他方式,不一样的简单感受!搜索引擎优化。做了基础的seo优化。对搜索引擎更友好系统功能关于我们:介绍企业介绍类信息,可自由添加多个介绍栏目!资讯中心:公司或行业资讯类内容展示。可自由添加多个资讯内容!产品展示:支持类别设置,可添加产品图片
0
# 如果$conflict为空,则IP不冲突;否则会得到arp缓存中的信息 conflict=`ping -c 2 -t 1 $TMP_IP_INPUT >/dev/null 2>&1 && arp -a $TMP_IP_INPUT`
结合上述约束条件和各种设置失败的异常处理(包括还原现场),脚本可以完成网络设置。
在Shell脚本中,输入参数的处理可以通过getopt来实现:
option=`getopt -l help -l init -- nhim: "$@"` 2> /dev/null
eval set -- "$option"
while true
do
case $1 in
-h|--help)
# 使用说明
usage_Func
break;
;;
-n)
# 设置完成后系统不重启
SYS_REBOOT_ENABLE=$SYS_REBOOT_OFF
shift 1
;;
-m)
# 设置MAC地址,并接收MAC地址到变量MACADDR
MAC_SET_ENABLE=$MAC_SET_ON
MACADDR=$2
shift 2
;;
-i|--init)
# 此选项用于系统启动时设置网络配置
INIT_CONFIG_NET_ENABLE=1
shift 1
;;
--)
# 使用说明
shift
break;
;;
*)
# 使用说明
shift
break;
;;
esac
done特殊变量列表:
| 变量 | 含义 |
|---|---|
| $0 | 当前脚本的文件名 |
| $n | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 |
| $# | 传递给脚本或函数的参数个数。 |
| $* | 传递给脚本或函数的所有参数。 |
| $@ | 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 |
| $? | 上个命令的退出状态,或函数的返回值。一般情况下,大部分命令执行成功会返回 0,失败返回 1。 |
| $$ | 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 |
$* 和 $@ 的区别:
$ 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。但是当它们被双引号(" ")包含时,"$" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。
网络配置通过INI配置文件进行管理。INI文件由节、键、值组成。例如:
[NETWORK] ipaddr=172.16.0.xx netmask=255.255.255.0 gateway=172.16.0.1 macaddr=xxxxxx
读取INI配置文件中的值:
read_ini=`awk -F '=' '/\['$SECTION'\]/{a=1}a==1&&$1~/'$ITEM'/{print $2;exit}' $INIFILE`
# 例如:ip=`awk -F '=' '/\['NETWORK'\]/{a=1}a==1&&$1~/'ipaddr'/{print $2;exit}' $INIFILE`更改INI配置文件中的值:
sed '/^'"$ITEM"'/{ s~^.*$~'"$ITEM"'='"$VALUE"'~g }' -i "$INIFILE"以上就是嵌入式设备网络设置的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号