`sudo`用C的root权限连接到wifi

时间:2014-05-23 05:37:47

标签: c linux

我想知道有没有办法通过使用C文件连接到wifi AP?目前我使用此代码

 system("sudo iwconfig wlan0 essid home")

但我希望用户输入ssid。有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您可以提示用户输入该SSID,然后构建将由system()运行的命令:

char ssid[100];
char cmd[200];
printf("Which AP you want to connect: ");
scanf(" %100[0-9a-zA-Z_-]", ssid);
snprintf(cmd, 200, "sudo iwconfig wlan0 essid %s", ssid);
system(cmd);

答案 1 :(得分:0)

如果您使用wpa_supplicant,则可以按照以下步骤使用以下设置连接到无线网络:

  • 检查传递给wpa_supplicant的配置文件位置。

    ps -eaf | grep wpa *

您可以从here获取有关conf文件的详细信息。假设您的配置文件位于 /usr/etc/wifi.conf 位置。 通过根据文件末尾的网络配置附加网络信息,从c代码添加网络详细信息,如下所示:

network={
ssid="simple"
psk="very secret passphrase"
  }

对于不同的网络类型,上述语法可能会发生变化。关闭配置文件后,发出reconfigure命令&它会将您连接到无线网络。

您还可以使用wpa_cli命令行工具来实现上述目的。有关wpa_cli的更多信息,请查看here