Com es defineixen les variables bash en números aleatoris



Proveu El Nostre Instrument Per Eliminar Problemes

Podeu generar fàcilment un número aleatori a la sol·licitud bash, que podeu utilitzar per definir aquest número com a variable. Això és útil per a tot, des de l’escriptura de certs tipus de scripts fins a la realització d’aventures de rol de sobretaula. Tant si escriviu una campanya de D&D com si escriviu una utilitat en el potent llenguatge bash, normalment podeu sortir d’una sola línia de codi. Aquesta també és una eina molt útil per intentar realitzar certes comprovacions de seguretat, però voldreu recordar que els bons crackers poden eludir aquests generadors de números simples. Encara són útils per generar determinats tipus de contrasenyes i codi, cosa que pot ajudar a mantenir les coses de totes maneres segures.



Hi ha algunes maneres diferents d’aconseguir-ho, i no totes les tècniques són adequades per a cada situació, així que vam fer tot el possible per fer una ullada a cada manera i provar-la per assegurar-nos que funcionés. Per a això, haureu de treballar des d’un terminal, de manera que utilitzeu Ctrl + Alt + T o Super (Windows) + T per obrir un terminal gràfic, comenceu un escrivint terminal al Dash, seleccioneu-lo a l’aplicació o el bigoti i els menús Eines del sistema o dirigiu-vos a un terminal virtual de debò mitjançant Ctrl, Alt i una tecla entre F1 i F6.



Mètode 1: escollir un byte aleatori complet

Podeu generar un número aleatori d'entre 1 i 256 executant l'ordre següent directament des de la sol·licitud bash:



de -An -N1 -tu1 / dev / urandom

Tot i que a vegades és possible que vegeu aquesta ordre a la qual es fa referència / dev / random en lloc de / dev / urandom, probablement no voldreu executar-la d’aquesta manera. Això pot impedir involuntàriament que altres programes puguin utilitzar el generador de llavors aleatòries durant el seu ús. Un cop hàgiu executat el programa i obtingueu un número, podeu estar segur que també funcionarà així:



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

Això establirà la variable ranNum en un número entre 1 i 256, seleccionat en el moment que l'executeu. Podeu executar-lo des de la línia d'ordres o des de l'interior d'un script i hauria de funcionar de qualsevol manera. Tingueu en compte que podeu substituir ranNum per qualsevol nom de variable vàlid.

Mètode 2: definir una variable a un número aleatori entre 1 i el que sigui

Podeu executar echo $ [RANDOM% 40 + 1] des de la línia d'ordres per enviar un número aleatori entre 1 i 40 directament a la sortida estàndard, però també podeu substituir el 40 de l'ordre per pràcticament qualsevol número. Finalment, l’arquitectura de la màquina amfitriona es quedarà sense dígits o potser bash, però és dubtós que de tota manera necessiteu un nombre tan elevat.

Suposem que voleu generar un número aleatori entre 1 i 10 per a la configuració de la vostra variable. Podríeu córrer:

ranNum = $ [RANDOM% 10 + 1]

Tingueu en compte que podeu substituir 10 per qualsevol valor superior que vulgueu. Aquest valor és inclusiu, és a dir, 10 és una xifra retornada vàlida. Si volíeu reduir-lo en un, simplement feu el valor 9 en lloc d’utilitzar matemàtiques de l’estil C o C ++ -1. No són necessaris a l’hora d’establir una variable amb aquest mètode i, de fet, generaran resultats inesperats afegint o restant dígits.

Mètode 3: Selecció d'un bit aleatori únic

Si heu d’establir una variable en un bit aleatori de zero o un, és possible que vulgueu modificar el codi anterior de la següent manera:

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

Aquest codi establirà ranNum a 1 o 0 en funció de si els números que ha mostrat del fitxer / dev / urandom els fitxers eren parells o imparells. Això pot ser útil si cal establir una equació simple sí o no a un o altre estat.

Si això no és prou aleatori per al que esteu treballant, podeu obtenir un número una mica més aleatori fent una trucada al directori / proc / sys / kernel / random amb:

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

Una vegada més, però, això només establirà la variable en 1 o 0, que és perfecte per a la lògica binària, però no és tan útil per als moments en què és possible que necessiteu un nombre més llarg. Tanmateix, podríeu utilitzar qualsevol d'aquestes línies en un script bash si teniu cap necessitat de fer-ho. Aquesta segona opció pot ser realment millor per a situacions en què la primera falli també

Mètode 4: Creació de scripts bash per retornar números aleatoris

Si voleu tenir una eina pràctica per generar un número aleatori en qualsevol moment, podeu crear un script de línia d'ordres per fer-ho. Això no utilitza res més que el llenguatge bash estàndard que tenen les sol·licituds de Linux més modernes, de manera que gairebé qualsevol distribució moderna de Linux i alguns dels sistemes operatius basats en BSD haurien de gestionar-ho bé. És possible que vulgueu utilitzar cd ~ / .local / bin abans d’anar més enllà per assegurar-vos que teniu el vostre script en un lloc on el pugueu executar des de qualsevol lloc.

Escriviu nano random o vi random per començar, tot i que podeu utilitzar un nom diferent per al vostre script si voleu. També podeu utilitzar un altre editor de text si ho preferiu. Suposem que volíeu crear-ne un que tornés 1 o 0 quan s'escrivís a la línia d'ordres. Introduïu el següent i, a continuació, premeu Ctrl + O per desar-lo si utilitzeu nano:

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

Escriviu Ctrl + X per sortir de l’editor de text i, un cop a la línia d’ordres, utilitzeu chmod + x random per fer que el vostre script es pugui utilitzar. Per descomptat, podríeu utilitzar ranNum = $ [RANDOM% 10 + 1], ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom))) o qualsevol altra línia en lloc de ranNum = $ (($ RANDOM% 2)) perquè pugueu controlar exactament quin tipus de número voleu tornar. Suposem que voleu seleccionar un número entre l’1 i el 50 periòdicament. Canvieu el text de l'script bash a:

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

Ara podeu executar-lo fàcilment des de la línia d’ordres escrivint aleatòriament quan vulgueu generar un número aleatori.

4 minuts de lectura