Posted on 10-17-2017 07:45 AM
Does anyone have good ideas to keep students on their wlan and not the teachers wlan? Could I just create a config profile with the ssid and an incorrect password? Or could I run a script on check-in to remove the Teacher wlan from their preferred list? But they would still end up just typing the password back in. I do have a script from someone that looks great but for whatever reason when it runs it doesn't connect them back to the wlan like it's supposed to. Curious on what others use for a solution.
When running the below script all runs well until it connects to the student wlan. when connecting it hangs up. Maybe this is because I use a config profile to push the password? Note: We do not use AD. All our machines use local accounts.
#!bin/bash
# Monitor and Manage WiFi Networks
# Del Brown
# 11/21/16
# delonline@icloud.com
#
# Begin Variable Definitions
#Replace WIFINAME with your school WiFi. Leaving it empty will disconnect from any network.
WifiWhitelist="student"
# End of Variable Definitions
# Begin Function Declarations
connect ()
{
for SchoolNetwork in $WifiWhitelist
do
#loop through whitelist and connect to whitelisted network found
echo " Available Network ""$SchoolNetwork"
networksetup -setairportnetwork en0 "$SchoolNetwork" &>/dev/null
done
}
disconnect ()
{
echo "Time to disconnect"
# send disconnect command to en0
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -z
#exit 1
}
onSchoolNetwork ()
{
# test to see if the school network has been joined. You can either use the networksetup command or the airport utility for this
MyWifi=`networksetup -getairportnetwork en0 | awk '{print $4}'`
#MyWifi=`/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport --getinfo | grep " SSID" | awk '{print $2}'`
# Call the disconnect function if a network outside of school is joined
for AllowedID in $WifiWhitelist
do
if [ "$AllowedID" == "$MyWifi" ]
then # Asset is on the school network
echo "I am connected to the School Network ""$AllowedID"
exit 1
fi
done
echo "Device is not connected to School Network so disconnect and reconnect to the school"
disconnect
connect
exit
}
atSchool ()
{
WifiAvailable=`/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -s | awk '{print $1}'`
# test to see if the Asset is at school by scanning for school networks and see if one is the school
for ScannedNetworks in $WifiAvailable
do
for SchoolNetwork in $WifiWhitelist
do
if [ "$SchoolNetwork" == "$ScannedNetworks" ]
then
AssetAtSchool="Yes"
echo "The Device is at school"
return
fi
done
done
AssetAtSchool="No"
echo "asset is not at school so we don't care and we'll exit"
exit
}
# End Function Declarations
#########################
#program starts here
atSchool
onSchoolNetwork