Reporting Mac location in JSS
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Posted on
08-07-2020
06:27 AM
- last edited on
03-04-2025
02:55 AM
by
kh-richa_mig
Hello,
I was working on a project to implement the location tracking on all our managed devices. I tried many solutions but at the end I fund something similar to the Google API called Here. (Previously owned by Nokia). I don't know if this solution is less accurate in the devices location but you can make 250'000 API queries with the Freemium plan.
You can find bellow the script I'm using to set an Extension attribute (can also be used in a policy) :
PS : replace the apiKey="XXXXXXXXXXXXXXX" with your apiKey (Create your developer account : https://developer.here.com/)
#!/bin/sh
ASSETSERIALNUMBER=$(system_profiler SPHardwareDataType | awk '/Serial/ {print $4}')
INTERFACE=$(networksetup -listallhardwareports | grep -A1 Wi-Fi | tail -1 | awk '{print $2}')
STATUS=$(networksetup -getairportpower $INTERFACE | awk '{print $4}')
if [ $STATUS = "Off" ] ; then
networksetup -setairportpower $INTERFACE on
sleep 10
TURNOFFAGAIN="True"
fi
network=$(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -s | tail -n +2 | awk '{print substr($0, 34, 17)"$"substr($0, 52, 4)"$"substr($0, 1, 32)}' | sort -t $ -k2,2rn | head -12)
echo "$network" >> /tmp/gl_ssids.txt
OLD_IFS=$IFS
IFS="$"
URL="{"wlan": ["
exec 5</tmp/gl_ssids.txt
while read -u 5 MAC SS SSID
do
MAC=`echo $MAC | sed "s/^ *//g" | sed "s/ *$//g"`
URL+="{"mac": "$MAC"},"
done
IFS=$OLD_IFS
URL=$( echo $URL | rev | cut -c2- | rev)
URL+="]}"
apiKey="XXXXXXXXXXXXXXX"
GetLocation=$(curl -H "Content-Type: application/json" -H "Accept: application/json" -d "$URL" -X POST "https://pos.ls.hereapi.com/positioning/v1/locate?apiKey=${apiKey}")
if [[ $GetLocation == *"code"* ]]; then
echo "<result>Last location not fund</result>"
else
format=$( echo "$GetLocation" | tr -d "," | tr -d "{"location":{"lat":" )
LAT=$(echo "$format" | sed 's/g.*//')
LONG=$(echo "$format" | sed -e 's///g/g' | awk -F "g" '{print $2}')
LONG=$(echo "$LONG" | sed 's/u.*//')
echo "<result>LAT : $LAT LONG : $LONG</result>"
fi
if [ "$TURNOFFAGAIN" == "True" ] ; then
networksetup -setairportpower $INTERFACE off
fi
rm /tmp/gl_ssids.txt
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Posted on 06-20-2022 03:15 AM
Can you please let me know how to find API key ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Posted on 06-20-2022 04:56 AM
You can find below a small guide :
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Posted on 06-20-2022 05:00 AM
Thank you i have generated API key, will test the same
