【问题标题】:How to delete a network profile from etc/wpa_supplicant/wpa_supplicant.conf through command line / shell script如何通过命令行/shell 脚本从 etc/wpa_supplicant/wpa_supplicant.conf 中删除网络配置文件
【发布时间】:2015-04-17 02:16:02
【问题描述】:

我的 etc/wpa_supplicant/wpa_supplicant.conf 中保存了多个 wifi 网络 ssid,如下所示, 我们可以从这个 wpa_supplicant.conf 中删除一个特定的网络吗

例如:在以下网络中,可以通过 shell 脚本删除网络 myssid1,然后我可以通过 node.js 服务器执行该脚本

 network={
            ssid="myssid1"
            scan_ssid=0
            proto=WPA
            key_mgmt=WPA-PSK
            psk=5f55a9b869e9ab6d03839cae23c7243accc0ac0a12079d358328bf73ad2e0ebe
    }
    network={
           ssid="myssid2"
           scan_ssid=0
           proto=WPA
           key_mgmt=WPA-PSK
           psk=d89660510d06bbf7691f5296daae36872d697a88876c53db7de91aa85df4f68b
    }
    network={
           ssid="myssid3"
           scan_ssid=0
           proto=WPA
           key_mgmt=WPA-PSK
           psk=d635b33481a13b28a67e8964f58343cb19bc8c85c67cc56ee9bfe0c302914a5f
    }

【问题讨论】:

    标签: linux node.js shell raspberry-pi raspbian


    【解决方案1】:

    使用wpa_cli 你可以这样做:

    1:

    wpa_cli remove_network 0
    

    其中0 是您在运行wpa_cli add_network 后获得的network_id。它将移除网络并断开使用它的任何接口。

    注意network id不是文件中网络的顺序。您可以使用wpa_cli list_networks

    获取已配置的网络

    2:

    wpa_cli save_config
    

    这将保留更改,并将从etc/wpa_supplicant/wpa_supplicant.conf 中删除相应的网络块

    【讨论】:

    • 谢谢!我的squeezebox收音机快把我逼疯了!!
    【解决方案2】:

    你可以自己写。一些非常丑陋的 Quick-n-Dirty 代码例如:

    file="/etc/wpa_supplicant/wpa_supplicant.conf"
    foo="$(cat "$file" | awk '/myssid3/ { flag=1 }; flag==0 { print $0 }; /network={/ { flag=0 }' )"
    if echo -e "$foo" | tail -1 | grep -q 'network={'; then
       foo=$(echo -e "$foo" | head -n -1)
    fi
    echo -e "$foo" > "$file"
    

    【讨论】:

    • 感谢您的输入,有没有办法对 node.js 做同样的事情?
    • 我试过这段代码,我得到错误:没有这样的文件或目录a_supplicant.conf myfile.sh:第7行:语法错误:文件意外结束
    【解决方案3】:

    我能够使用以下脚本完成它:

    SSID_TO_DELETE=$1 
    sed -n "1 !H 1 h $ { x s/[[:space:]]*network={\n[[:space:]]*ssid=\"${SSID_TO_DELETE}\"[^}]*}//g p }" /etc/wpa_supplicant/wpa_supplicant.conf > /etc/wpa_supplicant/wpa_supplicant.conf 
    

    【讨论】:

      【解决方案4】:
      SSID=$1 
      temp_var=$(sudo awk -v RS= '!/${SSID}/{printf $0""RT}' etc/wpa_supplicant/wpa_supplicant.conf)
      echo -e "$temp_var" | sudo tee etc/wpa_supplicant/wpa_supplicant.conf
      

      需要临时变量,因为这是我发现实际使 awk 写入文件处理的最简单方法。 要查看更改 wpa_supplicant.conf 的效果,请执行

      svc wifi disable && svc wifi enable
      

      一些参考资料:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-24
        • 2011-06-17
        • 1970-01-01
        • 2017-07-12
        • 1970-01-01
        • 1970-01-01
        • 2019-11-06
        • 2015-11-01
        相关资源
        最近更新 更多