macOS15 Sequoia BUGGGG!!!

Shwan
New Contributor

I have a script that worked before OS15. After updating to OS15, the script became abnormal. Even if it connected to the allowed SSID and obtained the IP address, it would turn off and on WIFI infinitely. The following is the script. Thank you for your help~~我有一个在OS15之前运行正常的脚本。在升级到OS15之后,脚本变得异常。即使连接到允许的SSID并获取了IP地址,它也会无限循环地开启和关闭WiFi。以下是该脚本。谢谢您的帮助~~我有一个在OS15之前运行正常的脚本。在升级到OS15之后,脚本变得异常。即使连接到允许的SSID并获取了IP地址,它也会无限循环地开启和关闭WiFi。以下是该脚本。谢谢您的帮助~~我有一个在OS15之前运行正常的脚本。在升级到OS15之后,脚本变得异常。即使连接到允许的SSID并获取了IP地址,它也会无限循环地开启和关闭WiFi。以下是该脚本。谢谢您的帮助~~

 

 

#!/bin/bash #!/bin/bash #!/bin/bash #!/bin/bash #!/bin/bash#!`/bin/bash` 文件内容: ```bash #!/bin/bash #!/bin/bash #!/bin/bash #!/bin/bash ```#!`/bin/bash` 文件内容: ```bash #!/bin/bash #!/bin/bash #!/bin/bash #!/bin/bash ```#!`/bin/bash` 文件内容: ```bash #!/bin/bash #!/bin/bash #!/bin/bash #!/bin/bash ```

 
 
 
 

# set the allowed SSID GUEST-VIP设置允许连接的SSID为“GUEST-VIP”。设置允许连接的SSID为“GUEST-VIP”。设置允许连接的SSID为“GUEST-VIP”。

 
 
 
 

allowed_ssid1="GUEST-VIP"

 
 
 
 

##Get the wireless port ID获取无线端口ID获取无线端口ID获取无线端口ID

 
 
 
 

wifi_port=$(networksetup -listallhardwareports | awk '/Wi-Fi|AirPort/{getline; print $NF}')`wifi_port=$(networksetup -listallhardwareports | awk '/Wi-Fi|AirPort/{getline; print $NF})'``wifi_port=$(networksetup -listallhardwareports | awk '/Wi-Fi|AirPort/{getline; print $NF})'``wifi_port=$(networksetup -listallhardwareports | awk '/Wi-Fi|AirPort/{getline; print $NF})'`

 
 
 
 

# current preferred SSID list目前首选的SSID列表目前首选的SSID列表目前首选的SSID列表

 
 
 
 

ssid_list=`networksetup -listpreferredwirelessnetworks $wifi_port | tail -n +2 | cut -c 2-``ssid_list=`命令用于获取当前可用的无线网络列表,其中`networksetup`是系统内置的网络设置命令,`-listpreferredwirelessnetworks`选项用于列出首选无线网络,`$wifi_port`是用户自定义的无线端口,`tail -n 2`用于选取前两行输出,`cut -c 2-`用于从第二列开始截取字符串。`ssid_list=`命令用于获取当前可用的无线网络列表,其中`networksetup`是系统内置的网络设置命令,`-listpreferredwirelessnetworks`选项用于列出首选无线网络,`$wifi_port`是用户自定义的无线端口,`tail -n 2`用于选取前两行输出,`cut -c 2-`用于从第二列开始截取字符串。`ssid_list=`命令用于获取当前可用的无线网络列表,其中`networksetup`是系统内置的网络设置命令,`-listpreferredwirelessnetworks`选项用于列出首选无线网络,`$wifi_port`是用户自定义的无线端口,`tail -n 2`用于选取前两行输出,`cut -c 2-`用于从第二列开始截取字符串。

 
 
 
 

# current connected SSID 目前连接的SSID(无线网络标识符)

 
 
 
 

connected_ssid=`networksetup -getairportnetwork $wifi_port | cut -c 24-``connected_ssid=`命令用于获取当前连接的Wi-Fi网络的SSID(服务集标识符)。其中,`networksetup`是Mac OS X系统中的网络设置工具,`getairportnetwork`是该工具的一个命令,用于获取当前连接的Wi-Fi网络的信息。`$wifi_port`是系统环境变量,用于指定当前连接的Wi-Fi网络的端口号。`cut`命令用于从输出中截取特定的字符串,这里是截取从第24个字符开始的字符串。因此,`connected_ssid`变量将存储当前连接的Wi-Fi网络的SSID。`connected_ssid=`命令用于获取当前连接的Wi-Fi网络的SSID(服务集标识符)。其中,`networksetup`是Mac OS X系统中的网络设置工具,`getairportnetwork`是该工具的一个命令,用于获取当前连接的Wi-Fi网络的信息。`$wifi_port`是系统环境变量,用于指定当前连接的Wi-Fi网络的端口号。`cut`命令用于从输出中截取特定的字符串,这里是截取从第24个字符开始的字符串。因此,`connected_ssid`变量将存储当前连接的Wi-Fi网络的SSID。`connected_ssid=`命令用于获取当前连接的Wi-Fi网络的SSID(服务集标识符)。其中,`networksetup`是Mac OS X系统中的网络设置工具,`getairportnetwork`是该工具的一个命令,用于获取当前连接的Wi-Fi网络的信息。`$wifi_port`是系统环境变量,用于指定当前连接的Wi-Fi网络的端口号。`cut`命令用于从输出中截取特定的字符串,这里是截取从第24个字符开始的字符串。因此,`connected_ssid`变量将存储当前连接的Wi-Fi网络的SSID。

 
 
 
 

# clean up ssid #清理ssid

 
 
 
 

IFS=$'\n'

 
 
 
 

for ssid in $ssid_list 对于 $ssid\_list 中的每个 SSID:

 
 
 
 

do

 
 
 
 

if [ "$ssid" != "$allowed_ssid1" ]如果 "$ssid" 不等于 "$allowed_ssid1" ,则执行下面的命令。如果 "$ssid" 不等于 "$allowed_ssid1" ,则执行下面的命令。如果 "$ssid" 不等于 "$allowed_ssid1" ,则执行下面的命令。

 
 
 
 

then 然后

 
 
 
 

networksetup -removepreferredwirelessnetwork $wifi_port $ssid使用命令“networksetup -removepreferredwirelessnetwork”来移除首选无线网络,其中“$wifi_port”是无线网络的端口号,“$ssid”是无线网络的SSID(服务集标识符)。使用命令“networksetup -removepreferredwirelessnetwork”来移除首选无线网络,其中“$wifi_port”是无线网络的端口号,“$ssid”是无线网络的SSID(服务集标识符)。使用命令“networksetup -removepreferredwirelessnetwork”来移除首选无线网络,其中“$wifi_port”是无线网络的端口号,“$ssid”是无线网络的SSID(服务集标识符)。

 
 
 
 

security delete-generic-password -a $ssid -D "AirPort network password"删除通用密码的安全操作 -a $ssid -D "AirPort 网络密码"删除通用密码的安全操作 -a $ssid -D "AirPort 网络密码"删除通用密码的安全操作 -a $ssid -D "AirPort 网络密码"

 
 
 
 

#echo $ssid Not allowed, and removed“#echo $ssid” 被禁止,并且已被删除。“#echo $ssid” 被禁止,并且已被删除。“#echo $ssid” 被禁止,并且已被删除。

 
 
 
 

#else 其他# 其他# 其他# 其他#

 
 
 
 

#echo $ssid is allowed 输出:“$ssid 被允许”

 
 
 
 

fi

 
 
 
 

done 完成

if [ "$connected_ssid" != "$allowed_ssid1" ]如果 "$connected_ssid" 不等于 "$allowed_ssid1" ,则执行下面的命令。如果 "$connected_ssid" 不等于 "$allowed_ssid1" ,则执行下面的命令。如果 "$connected_ssid" 不等于 "$allowed_ssid1" ,则执行下面的命令。

 
 
 
 

then 然后 然后 然后 然后

 
 
 
 

networksetup -setairportpower $wifi_port off使用以下命令关闭指定的无线端口的电源: `networksetup -setairportpower $wifi_port off`使用以下命令关闭指定的无线端口的电源: `networksetup -setairportpower $wifi_port off`使用以下命令关闭指定的无线端口的电源: `networksetup -setairportpower $wifi_port off`

 
 
 
 

networksetup -setairportpower $wifi_port on执行以下命令来开启指定的无线网络端口的电源: `networksetup -setairportpower $wifi_port on`执行以下命令来开启指定的无线网络端口的电源: `networksetup -setairportpower $wifi_port on`执行以下命令来开启指定的无线网络端口的电源: `networksetup -setairportpower $wifi_port on`

 
 
 
 

fi

6 REPLIES 6

AJPinto
Honored Contributor III

It's a bit hard to decipher this wall of text and changing between English and Chinese, can you provide the script in a code block? At a guess I would say that Apple updated whatever binary you are using and it's not a bug, but more so you need to update the script.

 

#!/bin/bash

echo "code blocks are friend"

AJPinto_0-1730378198203.png

 

Shwan
New Contributor

#!/bin/bash
# set the allowed SSID GUEST-VIP
allowed_ssid1="GUEST-VIP"
##Get the wireless port ID
wifi_port=$(networksetup -listallhardwareports | awk '/Wi-Fi|AirPort/{getline; print $NF}')
# current preferred SSID list
ssid_list=`networksetup -listpreferredwirelessnetworks $wifi_port | tail -n +2 | cut -c 2-`
# current connected SSID
connected_ssid=`networksetup -getairportnetwork $wifi_port | cut -c 24-`
# clean up ssid
IFS=$'\n'
for ssid in $ssid_list
do
if [ "$ssid" != "$allowed_ssid1" ]
then
networksetup -removepreferredwirelessnetwork $wifi_port $ssid
security delete-generic-password -a $ssid -D "AirPort network password"
#echo $ssid Not allowed, and removed
#else
#echo $ssid is allowed
fi
done

if [ "$connected_ssid" != "$allowed_ssid1" ]
then
networksetup -setairportpower $wifi_port off
networksetup -setairportpower $wifi_port on
fi

sdagley
Esteemed Contributor II

@Shwan I'll 2nd @AJPinto 's request that you format your script properly, but as to the issue you're having getting the SSID be aware that Apple has been removing the various mechanisms to determine the active SSID for the past several macOS updates. For details, and the only current mechanism that will work on macOS Sequoia, see the blog post from Dan K. Snelson: https://snelson.us/2024/09/determining-a-macs-ssid-like-an-animal/

Shwan
New Contributor

Sorry, I got stuck while pasting, here is the script:

#!/bin/bash
# set the allowed SSID GUEST-VIP
allowed_ssid1="GUEST-VIP"
##Get the wireless port ID
wifi_port=$(networksetup -listallhardwareports | awk '/Wi-Fi|AirPort/{getline; print $NF}')
# current preferred SSID list
ssid_list=`networksetup -listpreferredwirelessnetworks $wifi_port | tail -n +2 | cut -c 2-`
# current connected SSID
connected_ssid=`networksetup -getairportnetwork $wifi_port | cut -c 24-`
# clean up ssid
IFS=$'\n'
for ssid in $ssid_list
do
if [ "$ssid" != "$allowed_ssid1" ]
then
networksetup -removepreferredwirelessnetwork $wifi_port $ssid
security delete-generic-password -a $ssid -D "AirPort network password"
#echo $ssid Not allowed, and removed
#else
#echo $ssid is allowed
fi
done

if [ "$connected_ssid" != "$allowed_ssid1" ]
then
networksetup -setairportpower $wifi_port off
networksetup -setairportpower $wifi_port on
fi

daniel_behan
Contributor III

For sequoia, I updated my Extension Attribute to report on the SSID.

 

#!/bin/sh

##Get the wireless port ID
WirelessPort=$(/usr/sbin/networksetup -listallhardwareports | /usr/bin/awk '/Wi-Fi|AirPort/{getline; print $NF}')

##What SSID is the machine connected to
SSID=$(/usr/sbin/ipconfig getsummary "$WirelessPort" | /usr/bin/awk -F ' SSID : ' '/ SSID : / {print $2}')

echo "<result>$SSID</result>"

Shwan
New Contributor