2014-07-10 1 views
0

J'essaie d'écrire un script de vérification instal qui exécute profiles -P et se termine en fonction de la réponse.Installez Check Script qui vérifie Profils -P pour un profil spécifique

Nous utilisons un profil de Meraki dont la sortie ressemble donc (si elle est installée):

_computerlevel[1] attribute: profileIdentifier: com.meraki.sm.mdm 
There are 1 configuration profiles installed 

est-il un moyen de vérifier eteint pour cette réponse exacte?

Je pensais quelque chose comme:

#!/bin/bash 
output=profiles -P 
if [ output = com.meraki.sm.mdm ]; then 
exit 0; 
else 
exit 1; 

Toutes les idées?

Répondre

0

les opérations suivantes:

#!/bin/bash 

if sudo profiles -P | egrep -q ': com.meraki.sm.mdm$'; then 
    exit 0 
else 
    exit 1 
fi 
  • sortie de sudo profiles -P (notez que profiles exige toujours les privilèges root) est envoyé à egrep par un tuyau (|); les deux commandes forment un pipeline .
  • egrep -q ': com.meraki.sm.mdm$' recherches par la sortie de profile: Option
    • -q (calme) ne produit aucune sortie et les signaux simplement par son code de sortie si une correspondance a été trouvée (0) ou non (1).
    • ': com.meraki.sm.mdm$' est une expression régulière qui correspond à la chaîne 'com.meraki.sm.mdm' trouvée à la fin de la ligne ($), précédée de ':'. Grep -E` - il active le support étendu expressions régulières - pas strictement nécessaire ici, mais généralement conseillé pour moins de surprises).
  • La déclaration iftrue si évalue le rendement de pipeline code de sortie 0 et false autrement (non nulle). Notez que par défaut, il s'agit de la dernière commande dans le pipeline dont le code de sortie détermine le code de sortie global du pipeline.

Soit dit en passant, si tout ce que vous vouliez faire est d'avoir votre script reflète si la chaîne a été trouvée ou non (par exemple, si vous ne avez pas besoin de prendre d'autres mesures dans le script), ce qui suit suffirait:

sudo profiles -P | egrep -q ': com.meraki.sm.mdm$' 
exit $? # Special variable `$?` contains the most recent command's exit code 

Si vous voulez quitter votre script juste après en cas de défaillance seulement:

sudo profiles -P | egrep -q ': com.meraki.sm.mdm$' || exit 

# Alternative, with error message: 
sudo profiles -P | egrep -q ': com.meraki.sm.mdm$' || 
    { ec=$?; echo 'Profile not installed.' >&2; exit $ec; } 

A l'inverse, si l'on voulait sortir juste après, en cas de succès :

sudo profiles -P | egrep -q ': com.meraki.sm.mdm$' && exit 
+0

Merci beaucoup. Cela fonctionnera parfaitement. Je vais devoir échanger le code de sortie pour le but pour lequel je l'utilise, mais c'est parfait. Merci!Maintenant, pour résoudre le problème Curl>: D – WardsParadox

+0

@WardsParadox: Heureux d'entendre que ça fonctionne pour vous; mon plaisir. – mklement0

+0

Juste un petit mot, mais s'il est utilisé dans une situation d'installateur, a-t-il encore besoin du sudo? Étant donné que l'invite des installateurs (enfin tous les miens que je construis) ont besoin de privilèges administratifs pour les permissions root, cela ne devrait pas avoir besoin de sudo, n'est-ce pas? – WardsParadox

Questions connexes