一、无线配置语法
wireless.@wifi-iface[0]选项参数说明:
选项 | 说明 | 可选值及说明 | 必填 |
---|---|---|---|
device | 关联无线设备 | radio0 | 是 |
network | 关联网络设备类型 | lan:表示桥接到LAN网上 wwan:表示启用无线中继 |
是 |
mode | 无线工作模式 | ap:访问点模式 sta:客户端模式 |
是 |
ssid | 无线的名称,尽量用英文 | 字符串 | 是 |
hidden | 隐藏无线名称 | 0:禁用 1:启用 |
否 |
wmm | 无线多媒体优先支持 | 0:禁用 1:启用 |
否 |
encryption | 无线加密方式,推荐使用psk-mixed模式 | none:不加密 psk:WPA-PSK模式 psk2:WPA-PSK2模式 psk-mixed:WPA-PSK/WPA-PSK2混合 |
是 |
key | 无线密钥,只有设置了无线加密才有效 | 字符串,长度为8~64个ASCII字符 | 否 |
二、修改编译前Wireless配置文件
2.1 在openwrt-hiwooya无线驱动中
MT7688学习笔记(2)——添加WiFi驱动
配置文件位置/work/openwrt/package/hiwooya-wifi/ralink-wifi-mt7688/files/lib/wifi/ralink.sh
输入/config wifi-iface
找到
config wifi-iface
option device ra${i}
option network lan
option mode ap
option key 12345678
option ssid TM_${i#0}$(cat /sys/class/net/eth0/address|awk -F ":" '{print $4""$5""$6 }'| tr a-z A-Z)
option encryption psk-mixed
三、查看编译后Wireless配置文件
root@hi-wooya:/etc/config# vim network
config wifi-device 'ra0'
option type 'ralink'
option mode '9'
option channel 'auto'
option txpower '100'
option ht '20'
option country 'US'
option disabled '0'
config wifi-iface
option device 'ra0'
option network 'lan'
option mode 'ap'
option key '12345678'
option encryption 'psk-mixed'
option ssid 'TM_E17629'
- key 位于14行
- encryption 位于15行
- ssid 位于16行
四、C++程序
/**
@brief 修改文件某行内容
@param pFileName -[in] 文件名
@param lineNum -[in] 行号
@param content -[in] 修改的内容
@return 无
*/
static void modifyContentInFile(char *pFileName, int lineNum, string content)
{
if(!pFileName)
{
return ;
}
ifstream in;
char line[1024] = {'\0'};
in.open(pFileName);
int i = 0;
string tempStr;
while(in.getline(line, sizeof(line)))
{
i++;
if(lineNum != i)
{
tempStr += Char2Str(line);
}
else
{
tempStr += content;
}
tempStr += '\n';
}
in.close();
ofstream out;
out.open(pFileName);
out.flush();
out<<tempStr;
out.close();
}
void wifi(void)
{
string key = "\toption key 12345678";
string encryption = "\toption encryption psk2";
string ssid = "\toption ssid TNT";
unsigned char keyLine = 14; // 在文件中第14行
unsigned char encryptionLine = 15; // 在文件中第12行
unsigned char ssidLine = 16; // 在文件中第16行
char fileName[] = "/etc/config/wireless";
modifyContentInFile(fileName, keyLine, key);
modifyContentInFile(fileName, encryptionLine, encryption);
modifyContentInFile(fileName, ssidLine, ssid);
system("/etc/init.d/network restart"); // 重启network服务进程,使配置生效
}
执行wifi函数,重启网络。
• 由 Leung 写于 2019 年 6 月 21 日
• 参考:OpenWrt智能路由器系统开发——跟hoowa学智能路由