Pour de meilleures opérations informatiques : maîtriser les délais d’attente aléatoires sous Linux

Principaux points à retenir pour ce script PowerShell

  • Des délais adaptables : le script introduit des délais d’attente aléatoires et contrôlés et dans les environnements Linux, améliorant ainsi la gestion du flux de travail.
  • Traitement des paramètres : il gère efficacement les paramètres d’entrée et fournit des conseils utiles en cas d’entrées incorrectes.
  • Durées personnalisables : les utilisateurs peuvent spécifier des valeurs maximales pour les délais d’attente, avec une valeur par défaut de 120 minutes et un seuil maximal de 180 minutes.
  • Fonctionnalité de randomisation : le script se distingue en calculant une période d’attente aléatoire dans les limites du temps maximum donné.
  • Applicabilité aux opérations informatiques : idéal pour les scénarios tels que les déploiements de serveurs échelonnés afin d’éviter les pics de ressources.

La gestion efficace du temps est un aspect essentiel des opérations informatiques, en particulier lorsqu’il s’agit de l’écriture de scripts et de l’automatisation. Dans les scénarios où un temps d’attente aléatoire est nécessaire, un script capable de gérer intelligemment ce processus devient inestimable. C’est particulièrement vrai dans les environnements Linux où la précision et la fiabilité sont essentielles.

Contexte

Le script en question est conçu pour introduire un délai d’attente aléatoire dans un système Linux. Cet utilitaire peut s’avérer essentiel pour les professionnels de l’informatique et les fournisseurs de services gérés (MSP) qui ont besoin de délais contrôlés dans leurs flux de travail pour diverses raisons, notamment les tests, la synchronisation des processus et la prévention des surcharges du système. La possibilité de spécifier un délai d’attente maximum fait de ce script un outil utile dans de nombreux scénarios.

Le script :

#!/bin/bash

# Description: Wait a random amount of time, default max time is 120 Minutes (2 hours).
#
# Release Notes: Initial Release
# By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
# Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
# Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
# Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
# Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
# Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
# Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
# EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
#
# Below are all the valid parameters for this script.
# Preset Parameter: "ReplaceWithMaxWaitTimeInMinutes"
#

# Help text function for when invalid input is encountered
print_help() {
  printf 'n### Below are all the valid parameters for this script. ###n'
  printf 'nPreset Parameter: "ReplaceWithMaxWaitTimeInMinutes" n'
  printf 't%sn' "The Maximum amount of time you want the script to wait in minutes."
}

# Determines whether or not help text is nessessary and routes the output to stderr
die() {
  local _ret="${2:-1}"
  echo "$1" >&2
  test "${_PRINT_HELP:-no}" = yes && print_help >&2
  exit "${_ret}"
}

_arg_maxTime=

# Grabbing the parameters and parsing through them.
parse_commandline() {
  while test $# -gt 0; do
    _key="$1"
    case "$_key" in
    --help | -h)
      _PRINT_HELP=yes die 0
      ;;
    --*)
      _PRINT_HELP=yes die "FATAL ERROR: Got an unexpected argument '$1'" 1
      ;;
    *)
      if [[ -z $_arg_maxTime ]]; then
        _arg_maxTime=$1
      else
        _PRINT_HELP=yes die "FATAL ERROR: Got an unexpected argument '$1' but the max time '$_arg_maxTime' was already specified!" 1
      fi
      ;;
    esac
    shift
  done
}

parse_commandline "$@"

# If the number of times isn't specified we should default to 3
if [[ -n $maxTimeInMinutes ]]; then
  _arg_maxTime=$maxTimeInMinutes
fi

# If attempts was empty set a default
if [[ -z $_arg_maxTime ]]; then
  _arg_maxTime=120
fi

pattern='^[0-9]+$'
if [[ ! $_arg_maxTime =~ $pattern ]]; then
  _PRINT_HELP=yes die "FATAL ERROR: Max time '$_arg_maxTime' is not a number!" 1
fi

if [[ $_arg_maxTime -lt 1 || $_arg_maxTime -ge 180 ]]; then
  _PRINT_HELP=no die "FATAL ERROR: Max time '$_arg_maxTime' must be greater than 1 or less than 180" 1
fi

maxTimeInSeconds=$((_arg_maxTime * 60))
waitTime=$((1 + RANDOM % maxTimeInSeconds))

if [[ $((waitTime / 60)) == 0 ]]; then
  echo "Sleeping for $waitTime Seconds"
else
  echo "Sleeping for $((waitTime / 60)) Minutes".
fi

sleep $waitTime

echo "Finished Sleeping"

 

Accédez à plus de 700 scripts dans le Dojo NinjaOne

Obtenir l’accès

Description détaillée

Le script suit un processus structuré :

  • Traitement des paramètres initiaux : le script commence par définir une fonction print_help pour afficher les instructions d’utilisation. La fonction die est utilisée pour gérer les erreurs, diriger les messages vers l’erreur standard (stderr) et décider si un texte d’aide est nécessaire.
  • Analyse de la ligne de commande : la fonction parse_commandline permet au script de traiter les arguments entrants. Il gère tout ce qui est marqué –help et les arguments inattendus, en s’assurant que seules les entrées valides sont acceptées.
  • Valeurs par défaut et validation : si aucun délai d’attente n’est spécifié, le script le règle par défaut sur 120 minutes. Il inclut un modèle de regex pour s’assurer que l’entrée est une valeur numérique et vérifie que le délai s’encadre dans une plage valide (supérieure à 1 minute et inférieure à 180 minutes).
  • Calcul de l’attente aléatoire : le script calcule un temps d’attente aléatoire en secondes, sur la base du temps maximum spécifié, et affiche la durée de la veille (en secondes ou en minutes).
  • Exécution : la commande sleep est utilisée pour mettre le script en veille pendant la durée calculée.
  • Message de complétion : à la sortie de l’état de veille, le message « Finished Sleeping » (veille terminée) s’affiche.
  • Métadonnées : le script se termine par des métadonnées dans une section commentée, comprenant le nom du script et des informations sur le ticket de sortie.

Cas d’utilisation potentiels

Imaginez un professionnel de l’informatique qui gère des déploiements de serveurs. Pour éviter les pics de ressources simultanés, il peut utiliser ce script pour échelonner les heures de démarrage des différents services, ce qui garantit un fonctionnement plus fluide et réduit le risque de surcharge du système.

Comparaisons

Ce script Bash se distingue des autres méthodes similaires, telles que la commande sleep de PowerShell, par sa fonction de randomisation et sa facilité d’intégration dans les environnements Linux. La fonction Start-Sleep de PowerShell est plus directe mais moins flexible en ce qui concerne les durées aléatoires.

  • Puis-je spécifier un temps d’attente supérieur à 180 minutes ? Non, le script limite le délai d’attente maximal à 180 minutes afin d’éviter des délais trop longs.
  • Est-il possible d’utiliser ce script dans des environnements non-Linux ? Il est conçu pour les systèmes Linux et peut nécessiter des modifications pour fonctionner dans d’autres environnements tels que Windows (avec WSL) ou macOS.
  • Quelle est la précision du délai d’attente ? Le script est relativement précis, le caractère aléatoire étant limité par le temps maximum spécifié.

Implications

Bien que le script soit utile, il est important de l’utiliser judicieusement. Les délais aléatoires peuvent compliquer le débuggage et le repérage des problèmes dans les processus automatisés s’ils ne sont pas correctement documentés.

Recommandations

  • Documentation : documentez toujours quand et pourquoi vous utilisez ce script dans vos flux de travail.
  • Contrôle : mettez en place un suivi pour vous assurer que le comportement du script correspond à vos attentes.
  • Test : testez le script dans un environnement contrôlé avant de le déployer dans l’environnement de production.

Conclusion

Dans le contexte de NinjaOne, une plateforme connue pour améliorer la gestion et les opérations informatiques, l’intégration de tels scripts permet de rationaliser davantage la gestion des processus. Qu’il s’agisse de déploiements échelonnés ou d’environnements de test contrôlés, des outils comme ce script complètent les capacités de NinjaOne en ajoutant une couche de flexibilité et de contrôle dans les flux de travail opérationnels. Les entreprises s’appuyant de plus en plus sur des stratégies de gestion informatique sophistiquées, l’intégration de scripts intelligemment rédigés joue un rôle crucial dans le maintien d’écosystèmes informatiques efficaces et stables.

Pour aller plus loin

Pour créer une équipe informatique efficace et performante, il est essentiel d'avoir une solution centralisée qui joue le rôle de nœud principal pour vos services. NinjaOne permet aux équipes informatiques de surveiller, gérer, sécuriser et prendre en charge tous les appareils, où qu'ils soient, sans avoir besoin d'une infrastructure complexe sur site. Pour en savoir plus sur NinjaOne Endpoint Management, participez à une visite guidée, ou profitez d'un essai gratuit de la plateforme NinjaOne.

Catégories :

Vous pourriez aussi aimer

×

Voir NinjaOne en action !

En soumettant ce formulaire, j'accepte la politique de confidentialité de NinjaOne.

Termes et conditions NinjaOne

En cliquant sur le bouton “J’accepte” ci-dessous, vous indiquez que vous acceptez les termes juridiques suivants ainsi que nos conditions d’utilisation:

  • Droits de propriété: NinjaOne possède et continuera de posséder tous les droits, titres et intérêts relatifs au script (y compris les droits d’auteur). NinjaOne vous accorde une licence limitée pour l’utilisation du script conformément à ces conditions légales.
  • Limitation de l’utilisation: Les scripts ne peuvent être utilisés qu’à des fins personnelles ou professionnelles internes légitimes et ne peuvent être partagés avec d’autres entités.
  • Interdiction de publication: Vous n’êtes en aucun cas autorisé à publier le script dans une bibliothèque de scripts appartenant à, ou sous le contrôle d’un autre fournisseur de logiciels.
  • Clause de non-responsabilité: Le texte est fourni “tel quel” et “tel que disponible”, sans garantie d’aucune sorte. NinjaOne ne promet ni ne garantit que le script sera exempt de défauts ou qu’il répondra à vos besoins ou attentes particulières.
  • Acceptation des risques: L’utilisation du script est sous votre propre responsabilité. Vous reconnaissez qu’il existe certains risques inhérents à l’utilisation du script, et vous comprenez et assumez chacun de ces risques.
  • Renonciation et exonération de responsabilité: Vous ne tiendrez pas NinjaOne pour responsable des conséquences négatives ou involontaires résultant de votre utilisation du script, et vous renoncez à tout droit ou recours légal ou équitable que vous pourriez avoir contre NinjaOne en rapport avec votre utilisation du script.
  • EULA: Si vous êtes un client de NinjaOne, votre utilisation du script est soumise au contrat de licence d’utilisateur final qui vous est applicable (End User License Agreement (EULA)).