Cet article est conçu pour prendre en charge les personnes qui approvisionnent ou gèrent des appareils avec Azure IoT. Si cela ne vous ressemble pas, examinez la documentation Audiences pour OSConfig.
La fonctionnalité CommandRunner -->RunCommand vous permet d’échanger une certaine simplicité pour gagner en flexibilité. Quand vous en avez besoin, vous pouvez supprimer un niveau d’abstraction pour effectuer des rapports et une configuration personnalisés.
Exemples courants de création de rapports et de configuration personnalisés
Vérifier la connectivité des appareils aux points de terminaison clés
Vérifier que des démons spécifiques sont en cours d’exécution
Déboguer ou dépanner des appareils, par exemple en collectant des fichiers journaux et en les chargeant dans le stockage cloud
Configurez tous les appareils pour utiliser le fuseau horaire souhaité lors de la journalisation des données, la génération d’horodatages, etc.
Signaler (ou configurer) vos propres composants d’appareil uniques que OSConfig ne connaîtrait jamais
Les possibilités sont infinies, presque n’importe quelle tâche que vous pouvez effectuer dans un interpréteur de commandes pour un seul appareil. Vous pouvez le faire avec Azure IoT et OSConfig CommandRunner pour les flottes d’appareils
Ces exemples peuvent servir de points de départ pour vous permettre d’adapter votre environnement unique.
Chaque exemple inclut des étapes et des captures d’écran pour travailler dans le Portail Azure et pour travailler dans Bash avec Azure CLI.
Chaque exemple inclut également des variantes pour un appareil (par exemple, un scénario de résolution des problèmes) ou pour de nombreux appareils (par exemple, un provisionnement de configuration ou un scénario de création de rapports).
Qu’attendez-vous :
Dans les instructions d’un seul appareil, vous allez lire et écrire les propriétés signalées et souhaitées directement dans le jumeau OSConfig d’un appareil. Dans les instructions à grande échelle, vous allez utiliser IoT Hub Configurations (également appelées Automatique Gestion des appareils ou ADM) pour envoyer (push) les propriétés souhaitées à de nombreux jumeaux, et utiliser des requêtes IoT Hub (indépendamment, ou attachées aux configurations en tant que métriques) pour observer les résultats provenant des appareils.
Conditions préalables pour les exemples suivants
Si vous utilisez cet article pour référence (par exemple, vous êtes ici pour copier un nom de propriété), il n’existe aucune condition préalable.
Si vous souhaitez essayer les exemples sur les systèmes en direct (recommandé), alors :
Vous aurez besoin d’un compte Azure avec un IoT Hub
Cet article suppose une certaine connaissance des IoT Hub et des outils connexes. Par exemple, il suppose que vous êtes à l’aise avec la création d’IoT Hubs et l’attachement d’appareils. Si vous préférez une présentation pas à pas plus prescriptive de l’installation et de l’utilisation de OSConfig à partir de zéro, consultez : Démarrage rapide : Gérer un seul appareil IoT virtuel à l’aide d’Azure CLI à la place.
Vous aurez besoin d’au moins un appareil Linux avec l’agent OSConfig installé et connecté à Azure IoT.
Vérifiez que vous êtes connecté au portail Azure et que vous pouvez accéder à la page vue
Connectez-vous au portail Azure avec le compte que vous souhaitez utiliser
Lancer Azure Cloud Shell en mode bash
(facultatif) Utilisez la commande az account show pour vous assurer que vous êtes connecté au contexte que vous souhaitez utiliser pour les exemples.
Conseil
Il existe deux choses que vous devez savoir sur le comportement de CommandRunner pour réussir à l’aide de ces exemples :
Comme illustré dans les exemples, chaque nouvelle requête doit inclure une nouvelle valeur pour commandId (il peut s’agir de n’importe quelle chaîne, par exemple « MyCmd01 », « MyCmd02 »).
Le processus est asynchrone. Les résultats ne sont donc pas disponibles instantanément. La procédure la plus simple consiste à attendre environ une minute après avoir lancé une requête CommandRunner. Après cette minute, sans aucune étape supplémentaire de votre part, les résultats sont disponibles en properties.reported.CommandRunner.commandStatus. Pour plus d’informations sur le comportement d’actualisation, les mises à jour d’état asynchrones, etc., consultez : Comment interagir avec la fonctionnalité CommandRunner d’OSConfig et d’Azure IoT.
Exemple 1. Vérifier la connectivité des appareils à des points de terminaison spécifiques
Dans cet exemple, nous demandons au ou aux appareils d’effectuer un test ping www.github.com 3 fois. Nous observons le code de sortie de ping (réussite ou échec) et nous pouvons observer la sortie textuelle de la commande ping.
Dans la page du portail de votre IoT Hub, accédez au jumeau de module OSConfig pour l’appareil que vous souhaitez gérer. Ajoutez ensuite ce qui suit à la properties.desired section (suivie d’une virgule pour la séparer de l’élément suivant dans properties.desired).
Vous pouvez vérifier la connectivité de l’appareil en vérifiant la réponse à la commande ping à partir du jumeau de module OSConfig lui-même. Faites défiler vers le bas le jumeau de module pour rechercher les propriétés signalées pour CommandRunner. Recherchez resultCode : 0 qui indique que la commande a réussi et textResult qui affiche la sortie de la commande ping .
Dans la page du portail de votre Azure IoT Hub, choisissez Gestion des appareils -->Configurations -->Ajouter une configuration de module.
Spécifiez un nom et définissez les paramètres du jumeau avec la configuration du gestionnaire de package souhaitée. Définissez la propriété properties.desired.CommandRunnerde jumeau de module sur et définissez le contenu de propriété de jumeau de module sur ce qui suit :
Créez une métrique personnalisée avec un nom réussi et les critères de métrique comme indiqué ci-dessous. Cette requête de métrique identifie tous les appareils qui ont réussi à effectuer un test ping sur le point de terminaison.
SELECT deviceId FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.resultCode = 0
AND properties.reported.CommandRunner.commandStatus.commandId = 'pingcmd'
Pour les modules cibles, spécifiez les critères pour lesquels les appareils sont dans l’étendue. Dans cet exemple, nous allons cibler tous les appareils compatibles OSConfig, en spécifiant une condition cible de FROM devices.modules where moduleId='osconfig'
Pour observer les jumeaux des appareils qui ont été mis à jour avec le contenu de propriété de jumeau souhaité (côté cloud), consultez la métrique Appliquée (également appelée appliedCount)
Pour observer les appareils qui ont réussi à effectuer un test ping sur le point de terminaison, consultez la métrique de réussite personnalisée créée ci-dessus.
Vous pouvez également vérifier la sortie de la commande ping utilisée dans cet exemple à l’aide de la requête suivante. Dans la page du portail de votre Azure IoT Hub, choisissez Gestion des appareils -->Requêtes dans le volet de navigation gauche.
SELECT deviceId, properties.reported.CommandRunner.commandStatus
FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.commandId = 'pingcmd'
Utilisez l’exemple de commande suivant pour définir le jumeau OSConfig d’un seul appareil, en <remplaçant l’ID> d’appareil et/ou <le nom> du hub pour qu’il corresponde à votre environnement.
Vous pouvez vérifier la connectivité de l’appareil en vérifiant la réponse à la commande ping . Utilisez l’exemple de commande suivant qui obtient le résultat de la commande ping, en <remplaçant l’ID de> l’appareil et/ou <le nom> du hub pour qu’il corresponde à votre environnement. Recherchez resultCode : 0 qui indique que la commande a réussi et textResult qui affiche la sortie de la commande ping .
az iot hub query -q \
"SELECT properties.reported.CommandRunner.commandStatus.resultCode,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig'
AND deviceId='<device id>'" --hub-name <hub name> --output table
Utilisez l’exemple de commande suivant pour créer une configuration IoT Hub pour vérifier la connectivité réseau d’une flotte d’appareils connectés à un IoT Hub. Cette configuration inclut les critères de ciblage, les métriques personnalisées et la configuration souhaitée. Veillez à remplacer le nom> du< hub par votre nom IoT Hub.
az iot hub configuration create -c "checkconnectivity_devicefleet" --content \
'{"moduleContent":
{"properties.desired.CommandRunner":
{"commandArguments":
{"commandId": "checkconnectivity_devicefleet",
"arguments": "ping -c 3 www.github.com",
"timeout": 120,
"singleLineTextResult": false,
"action": 3
}}}}' \
--target-condition "from devices.modules where moduleId='osconfig'" --priority 10 \
--metrics "{\"metrics\": {\"queries\": {\"successfulpings\":\"select deviceId from devices.modules \
where moduleId='osconfig' AND properties.reported.CommandRunner.commandStatus.resultCode=0 \
and properties.reported.CommandRunner.commandStatus.commandId='checkconnectivity_devicefleet'\"}}}" \
--hub-name <hub name>
Pour observer les jumeaux des appareils qui ont été mis à jour avec le contenu de propriété de jumeau souhaité (côté cloud), consultez la métrique Appliquée (également appelée appliedCount). Pour observer les appareils qui ont réussi à effectuer un test ping sur le point de terminaison, consultez la métrique de réussite personnalisée créée ci-dessus.
Utilisez les commandes suivantes pour rechercher les métriques appliquées et personnalisées réussies.
az iot hub configuration show-metric --metric-id appliedCount \
-c "checkconnectivity_devicefleet" \
-n <hub name> --metric-type system
az iot hub configuration show-metric --metric-id successfulpings \
-c "checkconnectivity_devicefleet" \
-n <hub name> --metric-type user
À l’aide de la commande suivante, vous pouvez vérifier les résultats de la commande ping pour chaque appareil afin de voir s’il a réussi ou non. Recherchez resultCode : 0 qui indique que la commande a réussi et textResult qui affiche la sortie de la commande ping .
az iot hub query -q \
"SELECT deviceId, properties.reported.CommandRunner.commandStatus.resultCode,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig'" \
--output table --hub-name <hub name> --output table
Vous pouvez également vérifier la sortie de la commande ping utilisée dans cet exemple à l’aide de la requête suivante. Dans la page du portail de votre Azure IoT Hub, choisissez Gestion des appareils -->Requêtes dans le volet de navigation gauche. textResult de la sortie affiche le contenu du fichier souhaité.
SELECT deviceId, properties.reported.CommandRunner.commandStatus
FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.commandId = 'checkconnectivity_devicefleet'
Exemple 2. Obtenir le contenu de /etc/ssh/sshd_config
Dans cet exemple, nous utilisons CommandRunner pour capturer le contenu d’un fichier à partir de chaque appareil. Dans cet exemple, nous ne chargeons pas explicitement le fichier dans n’importe quel service de stockage cloud, mais capturez simplement son contenu dans le jumeau.
Important
Les mises à jour des propriétés de jumeau sont limitées à 4 Ko. L’approche indiquée ici capture le contenu du fichier (à partir de cat) inline dans le jumeau. Pour les fichiers très petits, cette approche offre l’avantage de ne pas nécessiter de services de stockage ou d’informations d’identification externes. Pour les fichiers plus volumineux, cette approche n’est pas applicable. Au lieu de cela, vous incluez la logique dans votre script/commande pour charger le fichier dans le stockage local ou cloud de votre choix. Par exemple, vous pouvez vous connecter à un partage cifs et copier le fichier, ou envoyer le contenu du fichier au Stockage Azure.
À partir de la page du portail de votre IoT Hub, accédez au jumeau OSConfig pour l’appareil que vous souhaitez gérer. Ajoutez ensuite ce qui suit à la properties.desired section (suivie d’une virgule pour la séparer de l’élément suivant dans properties.desired). Vous pouvez remplacer le nom de fichier de votre choix dans le champ arguments ci-dessous.
Vous pouvez voir le contenu du fichier à partir du jumeau de module lui-même. Faites défiler le jumeau de module pour rechercher commandStatus sous les propriétés signalées pour CommandRunner, ici, vous verrez cela dans le texteResult. Recherchez resultCode : 0 qui indique que la commande a réussi et textResult qui affiche le contenu du fichier souhaité.
Dans la page du portail de votre Azure IoT Hub, choisissez Gestion des appareils -->Configurations -->Ajouter une configuration de module.
Spécifiez un nom et définissez les paramètres de jumeau avec la configuration du gestionnaire de package souhaitée. Définissez la propriété jumeau de module sur properties.desired.CommandRunner et définissez le contenu de la propriété de jumeau de module sur la valeur suivante :
Pour les modules cibles, spécifiez les critères pour lesquels les appareils sont dans l’étendue. Dans cet exemple, nous allons cibler tous les appareils compatibles OSConfig, en spécifiant une condition cible de FROM devices.modules where moduleId='osconfig'
Pour observer les jumeaux des appareils mis à jour avec le contenu de propriété de jumeau souhaité (côté cloud), consultez la métrique Appliquée (également appelée appliedCount)
Vous pouvez également lire le contenu du fichier dans cet exemple à l’aide de la requête suivante. Dans la page du portail de votre Azure IoT Hub, choisissez Gestion des appareils -->Requêtes dans la navigation de gauche. Le contenu réel du fichier peut être vu dans commandStatus.textResult.
SELECT deviceId, properties.reported.CommandRunner.commandStatus
FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.commandId = 'sshdconfigfile_contents'
Utilisez l’exemple de commande suivant pour lancer la requête (en plaçant votre demande dans la properties.desired section du jumeau).
Utilisez la commande suivante pour afficher les résultats. Recherchez resultCode : 0 qui indique que la commande a réussi et textResult qui affiche le contenu du fichier souhaité.
az iot hub query --output table -q \
"SELECT properties.reported.CommandRunner.commandStatus.resultCode,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig'
AND deviceID='<device id>'" --hub-name <hub name>
Utilisez l’exemple de commande suivant pour créer une configuration IoT Hub. Cette configuration inclut des critères de ciblage, la configuration souhaitée. Veillez à remplacer le nom du hub par votre nom IoT Hub.
Utilisez la commande suivante pour afficher les résultats. Recherchez resultCode : 0 qui indique que la commande a réussi et textResult qui affiche le contenu du fichier.
az iot hub query -q \
"SELECT deviceId, properties.reported.CommandRunner.commandStatus.resultCode,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig'" \
--output table --hub-name <hub name>
Pour observer les jumeaux des appareils mis à jour avec le contenu de propriété de jumeau souhaité (côté cloud), consultez la métrique Appliquée (également appelée applicationCount).
Utilisez la commande suivante pour rechercher la métrique appliquée .
az iot hub configuration show-metric --metric-id appliedCount \
-c "sshdconfigfile_contents" \
-n <hub name> --metric-type system
Vous pouvez également lire le contenu du fichier à l’aide de la requête suivante. Dans la page du portail de votre Azure IoT Hub, choisissez Gestion des appareils -->Requêtes dans la navigation de gauche.
SELECT deviceId, properties.reported.CommandRunner.commandStatus,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.commandId = 'sshdconfigfile_contents'
Exemple 3. Déployer un script inline simple pour définir le fuseau horaire sur UTC et signaler sur le fuseau horaire
Cet exemple illustre un cas d’usage simple où le script et les résultats peuvent être gérés inline dans le cadre du jumeau. L’exemple ici définit le fuseau horaire UTC, puis interroge le fuseau horaire une fois qu’il est défini.
À partir de la page du portail de votre IoT Hub, accédez au jumeau OSConfig pour l’appareil que vous souhaitez gérer, puis ajoutez ce qui suit à la properties.desired section, suivi d’une virgule pour la séparer de l’élément suivant dans properties.desired. action=3 ci-dessous spécifie l’action RunCommand .
Une fois la commande exécutée, faites défiler le jumeau de module pour rechercher commandStatus sous les propriétés signalées pour CommandRunner, ici, vous verrez le texteResult afficher le fuseau horaire actuel défini sur l’appareil.
Pour définir ou mettre à jour le fuseau horaire d’un parc d’appareils sur UTC, comme dans cet exemple, vous allez créer une configuration IoT Hub (également appelée IoT Hub automatique Gestion des appareils [ADM]).
Dans la page du portail de votre Azure IoT Hub, choisissez Gestion des appareils -->Configurations -->Ajouter une configuration de module.
Spécifiez un nom et définissez les paramètres de jumeau avec la configuration du gestionnaire de package souhaitée. Définissez la propriété jumeau de module sur properties.desired.CommandRunner et définissez le contenu de la propriété de jumeau de module sur la valeur suivante :
Pour les modules cibles, spécifiez les critères pour lesquels les appareils sont dans l’étendue. Dans cet exemple, nous allons cibler tous les appareils compatibles OSConfig, en spécifiant une condition cible de FROM devices.modules where moduleId='osconfig'
Créez une métrique personnalisée avec le nom correctement configuré et les critères de métrique comme indiqué ci-dessous. Cette requête de métrique identifie tous les appareils qui ont correctement mis à jour le fuseau horaire.
SELECT deviceId FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.resultCode = 0
AND properties.reported.CommandRunner.commandStatus.commandId = 'settimezone_config'
Une fois la configuration appliquée aux appareils, vous pouvez vérifier les jumeaux des appareils qui ont été mis à jour avec le contenu de propriété de jumeau souhaité (côté cloud), en vérifiant la métrique appliquée (également appelée applicationCount). Pour voir quels appareils ont correctement mis à jour le fuseau horaire, consultez la métrique personnalisée correctement configurée qui a été créée ci-dessus.
Vous pouvez également lire le fuseau horaire actuel sur ces appareils à partir de cet exemple à l’aide de la requête suivante. Dans la page du portail de votre Azure IoT Hub, choisissez Gestion des appareils -->Requêtes dans la navigation de gauche. Vous pouvez vérifier le fuseau horaire actuel sur ces appareils à partir de commandStatus.textResult.
SELECT deviceId, properties.reported.CommandRunner.commandStatus
FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.commandId = 'settimezone_config'
Utilisez l’exemple suivant pour définir le fuseau horaire sur l’appareil, puis lire le fuseau horaire actuel. action=3 ci-dessous spécifie l’action RunCommand . remplacement de l’ID<> d’appareil et/ou du <nom> du hub pour correspondre à votre environnement.
Vous pouvez interroger le résultat de la commande ci-dessus et vérifier le fuseau horaire actuel sur l’appareil à l’aide de l’exemple suivant. Recherchez resultCode : 0 qui indique que la commande a réussi et textResult affiche le fuseau horaire actuel.
az iot hub query -q \
"SELECT properties.reported.CommandRunner.commandStatus.resultCode,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig'
AND deviceID='<device id>'" --hub-name <hub name> --output table
Utilisez l’exemple de commande suivant pour créer une configuration IoT Hub. Cette configuration inclut des critères de ciblage, la configuration souhaitée. Veillez à remplacer le nom du hub par votre nom de IoT Hub.
az iot hub configuration create -c "settimezone_config" --content \
'{"moduleContent":
{"properties.desired.CommandRunner":
{"commandArguments":
{"commandId": "settimezone_cmd",
"arguments": "timedatectl set-timezone Etc/UTC | timedatectl | grep Time",
"timeout": 30,
"singleLineTextResult": false,
"action": 3
}}}}' \
--target-condition "from devices.modules where moduleId='osconfig'" --priority 10 \
--metrics "{\"metrics\": {\"queries\": {\"successfullyconfigured\":\"select deviceId from devices.modules \
where moduleId='osconfig' AND properties.reported.CommandRunner.commandStatus.resultCode=0 \
and properties.reported.CommandRunner.commandStatus.commandId='settimezone_cmd'\"}}}" \
--hub-name <hub-name>
Vous pouvez interroger le fuseau horaire défini sur les appareils à l’aide de l’exemple suivant. Le fuseau horaire actuel peut être vu dans commandStatus.textResult.
az iot hub query -q \
"SELECT deviceId, properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig'" \
--output table --hub-name <hub name>
Pour observer les jumeaux des appareils mis à jour avec le contenu de propriété de jumeau souhaité (côté cloud), consultez la métrique Appliquée (également appelée applicationCount). Pour observer les appareils qui ont réussi à effectuer un ping sur le point de terminaison, consultez la métrique personnalisée correctement configurée qui a été créée ci-dessus.
Utilisez les commandes suivantes pour rechercher ces deux métriques.
az iot hub configuration show-metric --metric-id appliedCount \
-c "settimezone_config" \
-n <hub name> --metric-type system
az iot hub configuration show-metric --metric-id successfullyconfigured \
-c "settimezone_config" \
-n <hub name> --metric-type user
Exemple 4. Déployer un script de création de rapports personnalisé à partir d’un référentiel en ligne
Cet exemple illustre l’appel d’un script situé en dehors du jumeau. Par exemple, vous pouvez placer vos scripts dans GitHub. Ce modèle peut se produire hors de nécessité (le script est trop grand pour le jumeau), ou hors de préférence. La commande dans le jumeau est un wrapper simple. Il télécharge le script principal et l’exécute.
Important
Pour prendre en charge ce document, nous avons publié un exemple de script. Cet exemple de script est fourni en tant que stand-in pour votre propre script dans GitHub ou ailleurs. Il collecte quelques points de données à partir de l’appareil, y compris un horodatage, un état démon et un espace disque libre. Vous devez inspecter les scripts à partir d’Internet, y compris celui-ci, avant de les exécuter sur vos appareils.
Dans la page du portail de votre IoT Hub, accédez au jumeau OSConfig de l’appareil que vous souhaitez gérer, puis ajoutez ce qui suit à la properties.desired section, suivi d’une virgule pour la séparer de l’élément suivant dans properties.desired.
Faites défiler vers le bas le jumeau de module pour rechercher CommandRunner -->commandStatus dans la section propriétés signalées du jumeau. Recherchez resultCode : 0 qui indique que la commande a réussi et textResult qui affiche la sortie du script exécuté. Voici un exemple de sortie extrait du jumeau OSConfig d’un appareil :
Pour télécharger et installer une application ou exécuter un script sur une flotte d’appareils, comme dans cet exemple, vous allez créer une configuration IoT Hub (également appelée IoT Hub automatique Gestion des appareils [ADM]).
Dans la page du portail de votre Azure IoT Hub, choisissez Gestion des appareils -->Configurations -->Ajouter une configuration de module.
Spécifiez un nom et définissez les paramètres du jumeau avec la configuration du gestionnaire de package souhaitée. Définissez la propriété properties.desired.CommandRunnerde jumeau de module sur et définissez le contenu de propriété de jumeau de module sur ce qui suit.
Pour les modules cibles, spécifiez les critères pour lesquels les appareils sont dans l’étendue. Dans cet exemple, nous allons cibler tous les appareils compatibles OSConfig, en spécifiant une condition cible de FROM devices.modules where moduleId='osconfig'
Créez une métrique personnalisée avec un nom correctement exécuté et les critères de métrique , comme indiqué ci-dessous. Cette requête de métrique identifie tous les appareils sur lesquels le script a été exécuté ou exécuté avec succès.
SELECT deviceId
FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.resultCode = 0
AND properties.reported.CommandRunner.commandStatus.commandId = 'runcustomscript_configuration'
Une fois la configuration appliquée aux appareils, vous pouvez vérifier les jumeaux des appareils qui ont été mis à jour avec le contenu de propriété de jumeau souhaité (côté cloud), en vérifiant la métrique Appliquée (également appelée AppliedCount). Pour voir quels appareils ont correctement mis à jour le fuseau horaire, consultez la métrique personnalisée qui a été créée ci-dessus.
Vous pouvez également vérifier que la configuration ci-dessus a été correctement appliquée et que l’installation a réussi à l’aide de la requête suivante. Dans la page du portail de votre Azure IoT Hub, choisissez Gestion des appareils -->Requêtes dans le volet de navigation gauche. Recherchez resultCode : 0 qui indique que la commande a réussi et textResult qui affiche la sortie du script.
SELECT deviceId, properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.commandId = 'runcustomscript_configuration'
L’exemple suivant montre le téléchargement et l’exécution d’un script simple sur un appareil spécifique. en remplaçant l’ID<> de l’appareil et/ou le <nom> du hub pour qu’ils correspondent à votre environnement.
Vous pouvez interroger le résultat du script ci-dessus sur l’appareil à l’aide de l’exemple suivant. Recherchez resultCode : 0 qui indique que la commande a réussi et textResult qui affiche la sortie du script.
az iot hub query -q \
"SELECT properties.reported.CommandRunner.commandStatus.resultCode,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig' AND properties.reported.CommandRunner.commandStatus.commandId = 'runcustomscript'
AND deviceId = '<device id>'" \
--hub-name <hub name> --output table
Utilisez l’exemple de commande suivant pour créer une configuration IoT Hub pour télécharger et exécuter un script personnalisé sur plusieurs appareils. Cette configuration inclut les critères de ciblage et la configuration souhaitée. Veillez à remplacer le nom du hub par le nom de votre IoT Hub.
az iot hub configuration create -c "runcustomscript_multipledevices" --content \
'{"moduleContent":
{"properties.desired.CommandRunner":
{"commandArguments":
{"commandId": "runcustomscript_multipledevices",
"arguments": "curl -s -L 'https://learn.microsoft.com/azure/osconfig/samples/report-multiple-datapoints-from-device.sh' | tr -d \'\r'| bash",
"timeout": 60,
"singleLineTextResult": false,
"action": 3
}}}}' \
--target-condition "from devices.modules where moduleId='osconfig'" --priority 10 \
--metrics "{\"metrics\": {\"queries\": {\"successfulruns\":\"select deviceId from devices.modules \
where moduleId='osconfig' AND properties.reported.CommandRunner.commandStatus.resultCode=0 \
and properties.reported.CommandRunner.commandStatus.commandId='runcustomscript_multipledevices'\"}}}" \
--hub-name <hub-name>
Vous pouvez vérifier le résultat de l’exécution du script sur les appareils à l’aide de l’exemple suivant. Recherchez resultCode : 0 qui indique que la commande a réussi et textResult qui affiche la sortie du script exécuté.
az iot hub query -q \
"SELECT deviceId, properties.reported.CommandRunner.commandStatus.resultCode,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig' AND properties.reported.CommandRunner.commandStatus.commandId = 'runcustomscript_multipledevices'" \
--output table --hub-name <hub name>
Étapes suivantes
Pour obtenir une vue d’ensemble des scénarios et fonctionnalités OSConfig, consultez :