1

我正在尝试制作一个 C++ 程序来连接到网络。

如果密码正确,Snippet 可以正常工作。

bool connect(const char* ssid, const char* key)
{
bool ret = false;

try
{
    if ((ssid) && (key))
    {
        std::string cmd = "nmcli device wifi connect " + std::string(ssid) + " password " + std::string(key);

        auto fp = popen(cmd.c_str(), "r");
        if (fp)  //changed if contents to make a "sharable" sample
        {
            char buff[2048] = {0};

            while (fgets(buff, sizeof(buff), fp) != nullptr)
            {
                if(std::string(buff).find("success") != std::string::npos) 
                {
                    ret = true;
                    break;
                }
            }

        }
    }
}
catch (std::exception& ex)
{
    std::cerr<<"exception: "<<ex.what()<<std::endl;
}

return ret;
}

我的问题是,如果密码不正确,软件会打开提示,而不是直接给我凭据错误。

如果我手动关闭提示,代码片段会按预期运行。

有没有办法防止密码重试提示?甚至更好的方法来处理这个*?

*目前无视安全问题(密码存储在 cmd 历史记录等)。

4

0 回答 0