zoukankan      html  css  js  c++  java
  • 使用wifi网卡笔记4---工具dhcp及全自动使用wifi

    dhcp : 使得WIFI网卡动态获取IP



    ·1、源码获取

    输入dh看有哪些应用程序,输入dhclient -v查看一下相关信息,源码获取的网址


    2、开发环境配置

    解压
    tar xzf dhcp-4.2.5-P1.tar.gz

    cd dhcp-4.2.5-P1

    配置

    ./configure --host=arm-linux ac_cv_file__dev_random=yes


    cd bind

    修改Makefile:

    //CC一般来说是gcc 或arm-linux-gcc,BUILD表示用此电脑(x86)编译,因而工具链是gcc

    ./configure BUILD_CC=gcc ac_cv_file__dev_random=yes --host=arm-linux --disable-kqueue


    tar xzf bind.tar.gz

    cd bind-9.8.4-P2


    file 命令是查看指定文件的信息,从上面可知gen文件是ARM 架构的,无法在PC上执行

    修改 lib/export/dns/Makefile.in 

    因为Makefile来源于Makefile.in

    gen: ${srcdir}/gen.c
            ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}
    改为
    gen: ${srcdir}/gen.c
            ${BUILD_CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}

    编译  



    安装

    make DESTDIR=$PWD/tmp install


    把文件复制到NFS
    sudo cp bin/* /work/nfs_root/fs_mini_mdev_new/bin/
    sudo cp sbin/* /work/nfs_root/fs_mini_mdev_new/sbin/
    sudo cp etc/dhclient.conf.example//work/nfs_root/fs_mini_mdev_new/etc/dhclient.conf
    sudo cp etc/dhcpd.conf.example//work/nfs_root/fs_mini_mdev_new/etc/dhcpd.conf


    sudo cp client/scripts/linux/work/nfs_root/fs_mini_mdev_new/etc/dhclient-script

    增加可执行权限

    chmod +x /work/nfs_root/fs_mini_mdev_new/etc/dhclient-script
    并修改
    #!/bin/bash
    改为

    #!/bin/sh

    在嵌入式里面,我们用的shell是bin/sh





    3、使用

    启动开发板,接上无线网卡

    mkdir -p /var/db

    //-B是指应用程序wpa_supplicant运行于后台,-c是指定配置文件, -i是指定网卡接口名

    wpa_supplicant -B -c/etc/wpa_wpa2.conf  -iwlan0

    //让网卡eth0 自动获取ip地址和dns

    dhclient wlan0

    dhclient -h
    显示帮助
    man  dhclient  (搜索debug,查看debug信息)
    显示帮助手册
    dhclient  是自动配置网卡ip和dns使用的命令,
    dhclient -d wlan0  -d用于显示一些信息
    ifconfig -a  可以看到计算机上的网卡
    route命令 本地 IP 路由表中显示和修改条目网络命令

    cat  etc/resolv.conf//里面存储的是域名服务器(可在ping的时候可根据ping的网址找到相应的IP地址)


    4、 一连接上WIFI AP, 就自动执行dhclient
    (1)创建一脚本:    

    cat /sbin/wpa_action.sh 
    #!/bin/sh
    IFNAME=$1 表示哪一个网卡
    CMD=$2  CONNECTED或者DISCONNECTED,表示动作

    if [ "$CMD" = "CONNECTED" ]; then 

    //把打印信息connect $IFNAME, dhclient for it显示到控制台

       echo connect $IFNAME, dhclient for it > /dev/console

     假若网卡是wlan0 ,执行dhclient  wlan0

       dhclient $IFNAME
    fi
    //脚本语言,对应if----fi,表示if 的结束语句

    if [ "$CMD" = "DISCONNECTED" ]; then

       echo disconnect $IFNAME, kill dhclient for it > /dev/console

    杀掉名字为dhclient的进程

       killall dhclient
    fi

    例:

    wpa_cli  -iwlan0  disconnect表示断开链接


    (2)修改脚本的可执行权限

    chmod +x /sbin/wpa_action.sh

    (3)执行以下命令

    -a代表action,运行程序wpa_cli会一直运行于后台(-B是运行于后台的意思),当wpa_supplicant发现wifi网卡连接上AP后,就会给wpa_cli发一个事件(通过socket通信),wpa_cli就会执行脚本/sbin/wpa_action.sh

    wpa_cli -a/sbin/wpa_action.sh -B

    用PS命令查看进程



    5、热拔插功能

     一接入WIFI网卡,就自动执行wpa_supplicant等(查看wap_supplicant文件的ERADME文件了解使用功能)

    参考第2期视频第28课热拔插

    (1)修改mdev.conf配置文件

    cat /etc/mdev.conf 


    wlan0 0:0 777 * /sbin/auto_wifi.sh

    (2)编写脚本文件

    cat /sbin/auto_wifi.sh (自动连接wifi的脚本文件)
    #!/bin/sh
    if [ $ACTION = "add" ]; 如果添加网卡的话

    then       

     //-B是指应用程序wpa_supplicant运行于后台,-c是指定配置文件 -i是指定网卡接口名          wpa_supplicant -B -c/etc/wpa_wpa2.conf  -iwlan0

    -a代表action,运行程序wpa_cli会一直运行于后台(-B是运行于后台的意思),当wpa_supplicant发现wifi网卡连接上AP后,就会给wpa_cli发一个事件(通过socket通信),wpa_cli就会执行脚本/sbin/wpa_action.sh

       wpa_cli -a/sbin/wpa_action.sh -B
    else                     
       killall wpa_supplicant
       killall wpa_cli 
       killall dhclient
    fi

    (3)修改脚本属性

    chmod +x /sbin/auto_wifi.sh 


    转自:http://blog.csdn.net/qingkongyeyue/article/details/52287855

  • 相关阅读:
    如何从零开始创建一个IT信息系统
    Linux常用命令
    vue.js 3.2.20: 用rem实现移动端和pc的兼容
    vue.js3.2.6:路由处理404报错(vue-router@4.0.11)
    vue.js项目在nginx上部署:使spring后端记录真实ip地址
    vue.js 3.0.5:用vue-i18n开发i18n国际化功能(vue-i18n@9.2.0)
    前台项目基础框架之spring boot后端(spring boot v2.5.4)
    前台项目基础框架之vue前端(vue@3.2.6)
    intellij idea 2021.2:为一个spring boot项目改名
    git:修改项目的remote地址(git version 2.30.2)
  • 原文地址:https://www.cnblogs.com/alan666/p/8311859.html
Copyright © 2011-2022 走看看