Comment définir des variables bash sur des nombres aléatoires



Essayez Notre Instrument Pour Éliminer Les Problèmes

Vous pouvez facilement générer un nombre aléatoire à l'invite bash, que vous pouvez ensuite utiliser pour définir ledit nombre comme variable. Ceci est utile pour tout, de l'écriture de certains types de scripts à l'exécution d'aventures de jeu de rôle sur table. Que vous écriviez une campagne D&D ou que vous créiez un utilitaire dans le puissant langage bash, vous pourriez généralement vous en tirer avec une seule ligne de code. C'est également un outil très utile lorsque vous essayez d'effectuer certains contrôles de sécurité, mais vous devez vous rappeler que de bons crackers peuvent contourner ces simples générateurs de nombres. Ils sont toujours utiles pour générer certains types de mots de passe et de code, ce qui peut aider à garder les choses en sécurité de toute façon.



Il y a plusieurs façons d'accomplir cela, et toutes les techniques ne conviennent pas à chaque situation, nous avons donc fait de notre mieux pour examiner chaque méthode et l'avons testée pour nous assurer qu'elle fonctionnait. Vous devrez travailler à partir d'un terminal pour cela, alors utilisez Ctrl + Alt + T ou Super (Windows) + T pour ouvrir un terminal graphique, démarrez-en un en tapant terminal dans le tableau de bord, sélectionnez-le dans l'application ou Whisker et les menus Outils système ou dirigez-vous sérieusement vers un terminal virtuel en utilisant Ctrl, Alt et une touche entre F1 et F6.



Méthode 1: choisir un octet aléatoire complet

Vous pouvez générer un nombre aléatoire compris entre 1 et 256 en exécutant la commande suivante directement à partir de l'invite bash:



de -An -N1 -tu1 / dev / urandom

Bien que vous puissiez parfois voir cette commande référencée à / dev / random au lieu de / dev / urandom, vous ne voudrez probablement pas exécuter de cette façon. Cela peut involontairement priver d'autres programmes de la possibilité d'utiliser le générateur de semences aléatoires pendant que vous l'utilisez. Une fois que vous avez exécuté le programme et obtenu un numéro, vous pouvez être sûr qu'il fonctionnera également de cette façon:



ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom)))

Cela définira la variable ranNum sur un nombre compris entre 1 et 256, sélectionné au moment où vous l'exécutez. Vous pouvez l'exécuter à partir de la ligne de commande ou de l'intérieur d'un script et cela devrait fonctionner dans les deux sens. Gardez à l'esprit que vous pouvez remplacer ranNum par n'importe quel nom de variable valide.

Méthode 2: Définition d'une variable sur un nombre aléatoire compris entre 1 et n'importe quoi

Vous pouvez exécuter echo $ [RANDOM% 40 + 1] à partir de la ligne de commande pour envoyer un nombre aléatoire entre 1 et 40 directement à la sortie standard, mais vous pouvez également remplacer le 40 dans la commande par pratiquement n'importe quel nombre. L’architecture de votre machine hôte finira par manquer de chiffres ou peut-être bash le fera, mais il est peu probable que vous ayez besoin d’un nombre aussi élevé de toute façon.

Supposons que vous souhaitiez générer un nombre aléatoire compris entre 1 et 10 pour votre configuration de variable. Vous pouvez exécuter:

ranNum = $ [RANDOM% 10 + 1]

Gardez à l'esprit que vous pouvez remplacer 10 par la valeur supérieure de votre choix. Cette valeur est inclusive, ce qui signifie que 10 est un chiffre renvoyé valide. Si vous vouliez le réduire de un, définissez simplement la valeur 9 au lieu d'utiliser les mathématiques de style C ou C ++ -1. Celles-ci ne sont pas nécessaires lors de la définition d’une variable à l’aide de cette méthode et génèrent en fait des résultats inattendus en ajoutant ou en soustrayant des chiffres.

Méthode 3: sélection d'un seul bit aléatoire

Si vous devez définir une variable sur un bit aléatoire égal à zéro ou à un, vous souhaiterez peut-être modifier le code précédent comme suit:

ranNum = $ (($ (od -An -N1 -i / dev / urandom)% 2))

Ce code définira ranNum sur 1 ou 0 selon que les nombres échantillonnés à partir du / dev / urandom fichier étaient pairs ou impairs. Cela peut être utile si vous devez définir une simple équation oui ou non pour l'un ou l'autre état.

Si ce n'est pas suffisamment aléatoire pour ce sur quoi vous travaillez, vous pourriez obtenir un nombre légèrement plus aléatoire en appelant le répertoire / proc / sys / kernel / random avec:

ranNum = $ ((0x $ (couper -c1-1 / proc / sys / kernel / random / uuid)% 2))

Encore une fois, cependant, cela ne définira la variable que sur 1 ou 0, ce qui est parfait pour la logique binaire mais pas aussi utile pour les moments où vous pourriez avoir besoin d'un nombre plus long. Vous pouvez cependant utiliser n'importe laquelle de ces lignes dans un script bash si vous en aviez besoin. Cette deuxième option pourrait en fait être meilleure pour les situations où la première échoue également

Méthode 4: création de scripts bash pour renvoyer des nombres aléatoires

Si vous souhaitez disposer d'un outil pratique pour générer un nombre aléatoire à tout moment, vous pouvez créer un script de ligne de commande pour le faire. Cela n'utilise rien de plus que le langage bash standard que la plupart des invites Linux modernes ont, donc à peu près toutes les distributions Linux modernes et bon nombre de systèmes d'exploitation basés sur BSD devraient gérer cela très bien. Vous souhaiterez peut-être utiliser cd ~ / .local / bin avant d’aller plus loin pour vous assurer que vous aurez votre script dans un endroit où vous pourrez l’exécuter de n’importe où.

Tapez nano random ou vi random pour commencer, mais vous pouvez utiliser un nom différent pour votre script si vous le souhaitez. Vous pouvez également utiliser un autre éditeur de texte si vous préférez. Supposons que vous vouliez en créer un qui renverrait 1 ou 0 lors de la saisie sur la ligne de commande. Entrez ce qui suit, puis appuyez sur Ctrl + O pour l'enregistrer si vous utilisez nano:

#! / bin / bash ranNum = $ (($ RANDOM% 2)) echo $ ranNum

Tapez Ctrl + X pour quitter l'éditeur de texte et une fois de retour sur la ligne de commande, utilisez chmod + x random pour rendre votre script utilisable. Vous pouvez bien sûr utiliser ranNum = $ [RANDOM% 10 + 1], ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom))) ou toute autre ligne à la place de ranNum = $ (($ RANDOM% 2)) pour que vous puissiez contrôler exactement le type de numéro que vous souhaitez récupérer. Supposons que vous souhaitiez sélectionner régulièrement un nombre compris entre 1 et 50. Remplacez le texte du script bash par:

#! / bin / bash ranNum = $ [RANDOM% 50 + 1] echo $ ranNum

Vous pouvez désormais l'exécuter facilement à partir de la ligne de commande en tapant au hasard chaque fois que vous souhaitez générer un nombre aléatoire.

4 minutes de lecture