嵌入式linux檢測wifi密碼錯誤的方法

1.wifi狀態的檢測使用下面的腳本

#!/bin/bash

function poke {
    while true
    do
        printf '\n'
        sleep 1
    done
}

retryTimes=10

function watch {
   (poke) | wpa_cli | while read -t 10 line

    do
        case "$line" in
            *'4-Way Handshake failed'*)
                echo "incorrect key"
                return
            ;;
            *'CTRL-EVENT-CONNECTED'*)
                echo "connected"
                return
            ;;
            *'Could not connect to wpa_supplicant'*)
                echo "Could not connect to wpa_supplicant"
                return
            ;;
            *'Failed to initiate AP scan'*)  
               echo "failed to init ap scan"
               return       
            ;;
        esac
    done
}
watch

2.應用程序中使用該腳本

    char strout[MAX_PATH];
    memset(strout, 0, MAX_PATH);

    FILE *fp = popen("/app/watch_wifi_connect_state.sh", "r");
    if(fp != NULL)
    {
        if(!feof(fp))
        {
            fgets(strout, sizeof(strout), fp);
            if(strstr(strout, "incorrect key"))
            {
                //密碼錯誤
                qDebug() << "密碼錯誤";
                emit passwordError();
            }
            else if(strstr(strout, "connected"))
            {
                //連接成功
                qDebug() << "連接成功";
                system("kill -10 $(pidof udhcpc)");
            }
        }
    }

    pclose(fp);

    system("kill $(pgrep -f /app/watch_wifi_connect_state.sh)");

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章