当前位置: 首页 > article >正文

嵌入式Linux之wifi配网脚本分析

嵌入式Linux系统,一般都支持wifi联网,可以通过sh脚本或其它语言代码编程来实现wifi联网。

本篇来介绍一种通过sh脚本来配置wifi的脚本执行原理。

1 sh脚本wifi联网介绍

这里以飞凌开发板中的wifi启动脚本为例来介绍。

在这里插入图片描述

在飞凌开发板的串口中,执行如下命令(调用fltest_wifi.sh脚本,并指定一些参数),进行wifi连接:

fltest_wifi.sh -i mlan0 -s "wifi_name" -p wifi_password
  • wifi_name是自己的wifi名称
  • wifi_password是对于的wifi密码

然后ifconfig指令可以查看板子IP信息:

[root@ok3568:/usr/sbin]# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:239 errors:0 dropped:0 overruns:0 frame:0
          TX packets:239 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:346556 (338.4 KiB)  TX bytes:346556 (338.4 KiB)

mlan0     Link encap:Ethernet  HWaddr E8:FB:1C:66:AF:DF
          inet addr:192.168.5.111  Bcast:192.168.5.255  Mask:255.255.255.0
          inet6 addr: fe80::eafb:1cff:fe66:afdf/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1799 errors:0 dropped:0 overruns:0 frame:0
          TX packets:981 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:109635 (107.0 KiB)  TX bytes:331552 (323.7 KiB)

[root@ok3568:/usr/sbin]#

可以看到,mlan0这个网络接口的IP为192.168.5.111

2 fltest_wifi.sh脚本文件分析

下面来具体分析fltest_wifi.sh脚本的内容。

2.1 开头部分分析

先来看开头的这段脚本:

cnt1=`ps aux | grep hostapd | grep -v grep  | wc -l`
if [ "$cnt1" != "0" ];then
        killall hostapd > /dev/null
fi

/etc/init.d/S80dnsmasq stop > /dev/null

分析:

首先是执行一条指令,确认正在运行的hostapd进程的个数,保存在cnt1变量中

  • ps aux:查看系统中当前正在运行的所有进程的详细信息
  • | grep hostapd | grep -v grep:匹配包含hostapd 并且不包含grep字样的行
  • | wc -l:统计行数(word count,字数统计)

注:“ps aux” 其实是一种组合使用的命令形式

  • “ps” 是 “process status”(进程状态)的缩写
  • “a” 表示显示所有用户(包括其他用户和终端用户)的进程,不仅仅是当前用户启动的进程
  • “u” 表示以用户为导向的详细格式(user-oriented detailed format)来显示进程信息,会给出诸如启动进程的用户、进程占用的 CPU 和内存资源百分比、进程状态等更为详细的信息
  • “x” 表示显示没有控制终端的进程,也就是那些在后台运行的、不是通过常规终端启动的进程

hostapd 是Linux中一款用于创建无线接入点(Wireless Access Point,WAP)的软件

hostapd的功能是用来创建AP,因为是要连接wifi,而不是创建热点,所以如果有hostapd进程,则停掉。

如果cnt1不为0,则杀掉所有的hostapd进程

  • killall:用于通过进程名来终止一个或多个正在运行的进程
  • > :Linux中常用的一种重定向操作,用于将命令的输出重定向到指定的位置
  • /dev/null:一个特殊的设备文件,可以接收任何写入的数据,但会直接丢弃这些数据

然后,执行/etc/init.d/S80dnsmasq stop

2.1.1 S80dnsmasq脚本分析

S80dnsmasq 也是一个脚本,内容为:

#!/bin/sh

[ -f /etc/dnsmasq.conf ] || exit 0

case "$1" in
        start)
                printf "Starting dnsmasq: "
                start-stop-daemon -S -x /usr/sbin/dnsmasq
                [ $? = 0 ] && echo "OK" || echo "FAIL"
                ;;
        stop)
                printf "Stopping dnsmasq: "
                start-stop-daemon -K -q -x /usr/sbin/dnsmasq
                [ $? = 0 ] && echo

http://www.kler.cn/a/419816.html

相关文章:

  • wordpress网站首页底部栏显示网站备案信息
  • 底部导航栏新增功能按键
  • 【C语言】结构体(四)
  • Python中的函数参数
  • 工作:三菱PLC防止程序存储器爆满方法
  • linux模拟试题
  • 排序算法中稳定性的意义和作用
  • C++实现网格交易的例子
  • 设计模式- Java
  • nlp培训重点
  • 海外centos服务器如何更换yum镜像源
  • 07《缓存》计算机组成与体系结构 系列课
  • docker 怎么启动nginx
  • 【C语言】结构体(二)
  • thinkphp自定义分页组件
  • 【Leetcode】26.删除有序数组中的重复项
  • Centos7安装MySQL8.0详细教程(压缩包安装方式)
  • mac终端自定义命令打开vscode
  • kube-proxy的iptables工作模式分析
  • 如何使用Python进行下载对应的视频地址
  • Python学习第十五天--魔术方法
  • Kong API Gateway 深度解析与实战指南
  • 【Linux内核】ashmem pin/unpin
  • Python毕业设计选题:基于django+vue的校园影院售票系统
  • CasaOS个人云存储系统使用Gopeed打造你的私人云端下载中心
  • Spring Boot自定义启动banner