嵌入式linux wpa_supplicant自動配置程式
最近專案中需要用到wifi自動連線功能,於是用c++
寫了個wpa_supplicant工具的自動配置連線的程式,實現了wifi的開啟,配置檔案的修改和自動獲取ip地址。
#include<stdio.h>
#include<string>
#include<cstring>
#include<stdlib.h>
#include<iostream>
#include<fstream>
/************************************************************************/
/* char*tostr 字串轉化str型別
輸入:char * 字串地址
無輸出
返回值: str型別的字串
*/
/************************************************************************/
std::string charToStr(char * contentChar)
{
std::string tempStr;
for (int i=0;contentChar[i]!='\0';i++)
{
tempStr+=contentChar[i];
}
return tempStr;
}
/************************************************************************/
/* 修改檔案某行內容
輸入:檔名 fileName 行號 lineNum ,修改的內容 content
輸出:檔名 fileName
無返回值
tip:1,lineNum從第一行開始 2.content需要加上換行符
*/
/************************************************************************/
void modifyContentInFile(char const *fileName,int lineNum,char *content)
{
std::ifstream in;
char line[1024]={'\0'};
in.open(fileName);
int i=0;
std::string tempStr;
while(in.getline(line,sizeof(line)))
{
i++;
if(lineNum!=i)
{
tempStr+=charToStr(line);
}
else
{
tempStr+=charToStr(content);
}
tempStr+='\n';
}
in.close();
std::ofstream out;
out.open(fileName);
out.flush();
out<<tempStr;
out.close();
}
int main(int argc,char *argv[])
{
char ssid[strlen(argv[1])+9];
char psw[strlen(argv[2])+8];
printf("argv[1]=%s len=%d\n",argv[1],strlen(argv[1]));
printf("argv[2]=%s len=%d\n",argv[2],strlen(argv[2]));
sprintf(ssid," ssid=\"%s\"",argv[1]);//第一個引數為名稱
sprintf(psw," psk=\"%s\"",argv[2]);//第二個引數為密碼
printf("config:%s %s \n",ssid,psw);
modifyContentInFile("/etc/wpa_supplicant.conf",5,ssid);//修改配置檔案的第5行wifi名稱
modifyContentInFile("/etc/wpa_supplicant.conf",7,psw);//修改第7行wifi密碼
system("ifconfig wlan0 up");//開啟wifi
system("wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B");
system("udhcpc -i wlan0");//自動分配ip
return 0;
}
儲存到WifiConfig.cpp檔案,使用g++交叉編譯器編譯上述程式碼
arm-linux–gnueabihf-g++ WifiConfig.cpp -o wifiConfig
將生成的程式放到開發板上,使用命令可以直接連線wifi。
./wifiConfig wifi名稱 wifi密碼
相關文章
- Linux開機自啟動配置Linux
- 在 Linux 中自動配置 IPv6 地址Linux
- SpringBoot2.4.0中嵌入式servlet容器的自動配置以及啟動原理(自我理解)Spring BootServlet
- webstorm配置Autoprefixer,自動補齊程式碼WebORM
- 嵌入式 Linux 基礎:環境配置(Debian 12 安裝配置)Linux
- Linux Shell互動式自動化運維程式Linux運維
- linux配置超時不操作自動退出登入TMOUTLinux
- Linux配置JavaEE環境 Linux中安裝JDK、Tomcat、mysql 設定Tomcat自啟動、設定mysql自啟動LinuxJavaJDKTomcatMySql
- 嵌入式Linux—Framebuffer應用程式設計Linux程式設計
- 在Linux中,如何在Linux中進行配置管理和自動化部署?Linux
- centos(linux): 列出所有的開機自啟動程式CentOSLinux
- springboot 自動配置原理Spring Boot
- SpringBoot自動配置原理Spring Boot
- Springboot MVC 自動配置Spring BootMVC
- Elasticsearch 9200自動配置Elasticsearch
- SpringBoot的自動配置Spring Boot
- SpringBoot(03)——自動配置Spring Boot
- Jenkins自動部署配置Jenkins
- SpringBoot | 自動配置原理Spring Boot
- SpringBoot(二)自動配置Spring Boot
- 痞子衡嵌入式:嵌入式裡串列埠(UART)自動波特率識別程式設計與實現串列埠程式設計
- 嵌入式linux應用程式移植方法總結Linux
- 自動批量對linux伺服器安裝配置NTP服務Linux伺服器
- 圖解如何在Linux上配置git自動登入驗證圖解LinuxGit
- Linux配置開機自啟動執行指令碼方法有哪些?Linux指令碼
- 嵌入式Linux中的LED驅動控制(續)Linux
- 『學了就忘』Linux檔案系統管理 — 60、Linux中配置自動掛載Linux
- Linux構建Git程式碼倉庫與自動部署LinuxGit
- 痞子衡嵌入式:嵌入式裡串列埠(UART)自動波特率識別程式設計與實現(輪詢)串列埠程式設計
- Spring Boot 自動配置原理Spring Boot
- springboot 自動配置案例分析Spring Boot
- Flink 配置自動調優
- SpringBoot的自動配置原理Spring Boot
- springboot_自動配置原理Spring Boot
- composer自動載入配置
- Ubuntu自動啟動配置指令碼Ubuntu指令碼
- ABAP Development Tool如何配置程式碼自動完成的快捷鍵dev
- 程式設計實戰篇——Spring Boot 自動配置實現程式設計Spring Boot