Posted on 02-11-2020 05:08 AM
Hi,
I'm trying to report on which of out machines don't have Meraki Agent installed. I have created Extension Attribute and used a Smart Group but its not showing any machines as having Meraki Agent.
What am I doing wrong?
The script works in Terminal
#!/bin/bash PROFILE_ID="com.meraki.sm.mdm" if ( /usr/bin/profiles -P | /usr/bin/grep -q $PROFILE_ID ); then # Profile is present echo "<result>True</result>" exit 1 else # Profile isn't there, need to install echo "<result>False</result>" exit 0 fi
Solved! Go to Solution.
Posted on 02-11-2020 06:07 AM
Hm, that is an interesting case. Seems when I pipe something to grep the exit code is not what 'man grep' promises - I always get '0'.
But why do do you need a EA for this? The MDM already knows which Profiles are installed. So just base your smart group on the criteria 'Profile Identifier' 'is' 'com.meraki.sm.mdm'.
Posted on 02-11-2020 06:07 AM
Hm, that is an interesting case. Seems when I pipe something to grep the exit code is not what 'man grep' promises - I always get '0'.
But why do do you need a EA for this? The MDM already knows which Profiles are installed. So just base your smart group on the criteria 'Profile Identifier' 'is' 'com.meraki.sm.mdm'.
Posted on 02-11-2020 07:20 AM
You could try something like this....
Instead of using the if command to do the true/false on the error code return value. Assign the return of the command to a variable and use the if to validate against that.
In this case, I'm just using a count on the return from grep.
#!/bin/bash
PROFILE_ID="com.meraki.sm.mdm"
profileCheck=$(sudo /usr/bin/profiles -P | /usr/bin/grep -c -i $PROFILE_ID)
if [[ $profileCheck == "1" ]]
then
# Profile is present
echo "<result>True</result>"
exit 1
elif [[ $profileCheck == "0" ]]
then
# Profile isn't there, need to install
echo "<result>False</result>"
exit 0
elif [[ $profileCheck -gt "1" ]]
then
#Profile count greater than 1 - potential issue.
echo "<result>Remediate</result>"
else
#Something went wrong.
echo "<result>Unknown - Error</result>"
fi
Posted on 02-11-2020 11:47 PM
@mcgace Have you tried to comment out the exit lines, especially the exit 1?
As you said it works in Terminal but JSS may get that exit 1 as a failure and not send the info upstream (not sure as I always end my EAs scripts with exit 0).
#!/bin/bash
PROFILE_ID="com.meraki.sm.mdm"
if ( /usr/bin/profiles -P | /usr/bin/grep -q $PROFILE_ID ); then
# Profile is present
echo "<result>True</result>"
#exit 1
else
# Profile isn't there, need to install
echo "<result>False</result>"
#exit 0
fi
exit 0
Regards
Posted on 02-12-2020 02:25 AM
Thanks guys, all valid responses and they do work as solutions. @mschroder was right, I am making extra work for no reason, so I based Smart Group on Profile Identifier