

• Le AWS Systems Manager CloudWatch tableau de bord ne sera plus disponible après le 30 avril 2026. Les clients peuvent continuer à utiliser CloudWatch la console Amazon pour consulter, créer et gérer leurs CloudWatch tableaux de bord Amazon, comme ils le font aujourd'hui. Pour plus d'informations, consultez la [documentation Amazon CloudWatch Dashboard](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation des codes de sortie dans les commandes
<a name="run-command-handle-exit-status"></a>

Dans certains cas, vous devrez peut-être gérer la façon dont vos commandes sont gérées à l'aide de codes de sortie.

## Spécifier les codes de sortie dans les commandes
<a name="command-exit-codes"></a>

À l’aide de Run Command, un outil d’AWS Systems Manager, vous pouvez spécifier des codes de sortie pour déterminer la manière dont les commandes sont gérées. Par défaut, le code de sortie de la dernière commande exécutée dans un script est signalé comme le code de sortie pour l'ensemble du script. Par exemple, prenons un script qui contient trois commandes. La première échoue, mais les suivantes sont réalisées avec succès. Compte tenu du succès de la commande finale, l'état de l'exécution est signalé comme `succeeded`.

**Scripts shell**  
Pour faire échouer la totalité du script lors du premier échec de la commande, vous pouvez inclure une instruction conditionnelle shell pour quitter le script si une commande précédant la dernière échoue. Utilisez pas l'approche suivante.

```
<command 1>
    if [ $? != 0 ]
    then
        exit <N>
    fi
    <command 2>
    <command 3>
```

Dans l'exemple suivant, la totalité du script échoue si la première commande échoue.

```
cd /test
    if [ $? != 0 ]
    then
        echo "Failed"
        exit 1
    fi
    date
```

**Scripts PowerShell**  
PowerShell exige que vous appeliez explicitement `exit` dans vos scripts pour que Run Command capture correctement le code de sortie.

```
<command 1>
    if ($?) {<do something>}
    else {exit <N>}
    <command 2>
    <command 3>
    exit <N>
```

Voici un exemple :

```
cd C:\
    if ($?) {echo "Success"}
    else {exit 1}
    date
```

# Gestion des redémarrages lors de l'exécution de commandes
<a name="send-commands-reboot"></a>

Si vous utilisez Run Command un outil pour exécuter des AWS Systems Manager scripts qui redémarrent des nœuds gérés, nous vous recommandons de spécifier un code de sortie dans votre script. Si vous essayez de redémarrer un nœud à partir d'un script à l'aide d'un autre mécanisme, l'état d'exécution des scripts peut ne pas être mis à jour correctement, même si le redémarrage est la dernière étape dans votre script. Pour les nœuds gérés Windows, spécifiez `exit 3010` dans votre script. Pour les nœuds gérés Linux et macOS, spécifiez `exit 194`. Le code de sortie indique à AWS Systems Manager l'agent (SSM Agent) de redémarrer le nœud géré, puis de redémarrer le script une fois le redémarrage terminé. Avant de commencer le redémarrage, SSM Agent informe le service Systems Manager dans le cloud que les communications seront interrompues pendant le redémarrage du serveur.

**Note**  
Le script de redémarrage ne peut pas faire partie d'un plugin `aws:runDocument`. Si un document contient le script de redémarrage et qu'un autre document tente d'exécuter ce document via le plugin `aws:runDocument`, SSM Agent renvoie une erreur.

**Création de scripts idempotents**

Lorsque vous développez des scripts qui redémarrent les nœuds gérés, rendez les scripts idempotents de sorte que l'exécution du script continue là où elle s'était arrêtée après le redémarrage. Les scripts idempotents gèrent l'état et valident si l'action a été exécutée ou non. Cela permet d'éviter qu'une étape soit exécutée plusieurs fois alors qu'elle est destinée à être exécutée une seule fois.

Voici un exemple de script idempotent qui redémarre le nœud géré plusieurs fois.

```
$name = Get current computer name
If ($name –ne $desiredName) 
    {
        Rename computer
        exit 3010
    }
            
$domain = Get current domain name
If ($domain –ne $desiredDomain) 
    {
        Join domain
        exit 3010
    }
            
If (desired package not installed) 
    {
        Install package
        exit 3010
    }
```

**Exemples**

Les échantillons de script suivants utilisent des codes de sortie pour redémarrer les nœuds gérés. L'exemple sur Linux installe les mises à jour de package sur Amazon Linux, puis redémarre le nœud. L’exemple Windows Server installe l’application Telnet-Client au niveau du nœud, puis le redémarre. 

------
#### [ Amazon Linux 2 ]

```
#!/bin/bash
yum -y update
needs-restarting -r
if [ $? -eq 1 ]
then
        exit 194
else
        exit 0
fi
```

------
#### [ Windows ]

```
$telnet = Get-WindowsFeature -Name Telnet-Client
if (-not $telnet.Installed)
    { 
        # Install Telnet and then send a reboot request to SSM Agent.
        Install-WindowsFeature -Name "Telnet-Client"
        exit 3010 
    }
```

------