Skip to main content

The following script does not work in Extension Attribute but works with ran manually (with BBEdit)

What am I missing

#!/bin/bash

SSKeychain=$( security find-certificate -a -c "Some Software, Inc" 2>&1 | grep labl )

if [[ -z $SSKeychain ]]
then echo "<result>Some Software Certificate not installed</result>"
else echo "<result>Applied</result>"
fi

What's the result of just the following command?

security find-certificate -a -c "Some Software, Inc" 2>&1 | grep labl

 


@Tangentism when I run in BBEdit, it output is correct but when I run in as a EA the output is blank.  The issue is the EA is running as Root, not as the user context (just figured that out yesterday (brain fart)).

I updated the EA script but still does not work 

#!/bin/bash

#get uid of console owner
eval $(stat -s /dev/console)
#get username
consoleUsername=$(id -un $st_uid)

#grep for string as console user
SSKeychain=$(su $consoleUsername -c "security find-certificate -a -c 'Some Software, Inc'" )

#if string is not empty
if [ -n "${SSKeychain}" ]; then
echo "<result>Installed</result>"
else
echo "<result>SS Certificate not installed</result>"
fi

Ah.... of course!

If you're looking in the users login.keychain-db, you'll need to specify the current logged in user & the absolute keychain path. I prefer to use `scutil` to get the currentUser.

I tried this method below and it spewed out a lot of data (I have 4 or 5 developer certs in my login keychain) so grep / awk if you want a specific name/trim the data returned down.

 

 

#get current user
currentUser="$(scutil <<<"show State:/Users/ConsoleUser" | awk '/Name 😕 && ! /loginwindow/ { print $3 }')"

# searches for 'developer' certs in current users login.keychain-db
# change path to /Library/Keychains/System.keychain if thats the one you want
SSKeychain=$(security find-certificate -a -c 'Developer' "/Users/${currentUser}/Library/Keychains/login.keychain-db")

# echos out but grep/awk the abve command to get a succinct reply then check with if clause
echo $SSKeychain

 

 


Ah.... of course!

If you're looking in the users login.keychain-db, you'll need to specify the current logged in user & the absolute keychain path. I prefer to use `scutil` to get the currentUser.

I tried this method below and it spewed out a lot of data (I have 4 or 5 developer certs in my login keychain) so grep / awk if you want a specific name/trim the data returned down.

 

 

#get current user
currentUser="$(scutil <<<"show State:/Users/ConsoleUser" | awk '/Name 😕 && ! /loginwindow/ { print $3 }')"

# searches for 'developer' certs in current users login.keychain-db
# change path to /Library/Keychains/System.keychain if thats the one you want
SSKeychain=$(security find-certificate -a -c 'Developer' "/Users/${currentUser}/Library/Keychains/login.keychain-db")

# echos out but grep/awk the abve command to get a succinct reply then check with if clause
echo $SSKeychain

 

 


Thank you @Tangentism it works