Cómo configurar las variables de bash en números aleatorios



Pruebe Nuestro Instrumento Para Eliminar Los Problemas

Puede generar fácilmente un número aleatorio en el indicador de bash, que luego puede usar para establecer dicho número como una variable. Esto es útil para todo, desde escribir ciertos tipos de scripts hasta ejecutar aventuras de juegos de rol de mesa. Ya sea que esté escribiendo una campaña de D&D o creando una utilidad en el poderoso lenguaje bash, generalmente podría salirse con la suya con una sola línea de código. Esta también es una herramienta muy útil cuando se intenta realizar ciertos controles de seguridad, pero debe recordar que los buenos crackers pueden eludir estos simples generadores de números. Siguen siendo útiles para generar ciertos tipos de contraseñas y códigos, lo que podría ayudar a mantener las cosas seguras de todos modos.



Hay algunas formas diferentes de lograr esto, y no todas las técnicas son adecuadas para cada situación, por lo que hicimos todo lo posible para analizar cada una de ellas y probarlas para asegurarnos de que funcionaban. Necesitará trabajar desde una terminal para esto, así que use Ctrl + Alt + T o Super (Windows) + T para abrir una terminal gráfica, inicie una escribiendo terminal en el Tablero, selecciónela de la Aplicación o Bigote y menús de herramientas del sistema o diríjase a una terminal virtual en serio usando Ctrl, Alt y una tecla entre F1 y F6.



Método 1: elegir un byte aleatorio completo

Puede generar un número aleatorio entre 1 y 256 ejecutando el siguiente comando directamente desde el indicador de bash:



de -An -N1 -tu1 / dev / urandom

Si bien a veces puede ver este comando referenciado a / dev / random en lugar de / dev / urandom, probablemente no desee ejecutar de esta manera. Esto puede robar involuntariamente a otros programas para que no puedan usar el generador de semillas aleatorias durante su uso. Una vez que haya ejecutado el programa y obtenido un número, puede estar seguro de que también funcionará de esta manera:



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

Esto establecerá la variable ranNum en un número entre 1 y 256, seleccionado en el momento de ejecutarlo. Puede ejecutarlo desde la línea de comandos o desde el interior de un script y debería funcionar de cualquier manera. Tenga en cuenta que puede reemplazar ranNum con cualquier nombre de variable válido.

Método 2: establecer una variable en un número aleatorio entre 1 y lo que sea

Puede ejecutar echo $ [RANDOM% 40 + 1] desde la línea de comandos para enviar un número aleatorio entre 1 y 40 directamente a la salida estándar, pero también puede reemplazar el 40 en el comando con prácticamente cualquier número. Eventualmente, la arquitectura de su máquina host se quedará sin dígitos o quizás bash lo hará, pero es dudoso que necesite un número tan alto de todos modos.

Supongamos que desea generar un número aleatorio entre 1 y 10 para la configuración de su variable. Podrías ejecutar:

ranNum = $ [RANDOM% 10 + 1]

Tenga en cuenta que puede reemplazar 10 con el valor superior que desee. Este valor es inclusivo, lo que significa que 10 es una cifra devuelta válida. Si desea reducirlo en uno, simplemente haga el valor 9 en lugar de usar las matemáticas de estilo C o C ++ -1. Estos son innecesarios cuando se configura una variable con este método y, de hecho, generarán resultados inesperados al sumar o restar dígitos.

Método 3: selección de un solo bit aleatorio

Si necesita establecer una variable en un bit aleatorio de cero o uno, es posible que desee modificar el código anterior de la siguiente manera:

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

Este código establecerá ranNum en 1 o 0 dependiendo de si los números que muestreó del / dev / urandom archivo eran pares o impares. Esto puede ser útil si necesita establecer una ecuación simple de sí o no en uno u otro estado.

Si esto no es lo suficientemente aleatorio para lo que está trabajando, entonces puede obtener un número un poco más aleatorio haciendo una llamada al directorio / proc / sys / kernel / random con:

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

Una vez más, sin embargo, esto solo establecerá la variable en 1 o 0, lo cual es perfecto para la lógica binaria pero no tan útil para los momentos en los que podría necesitar un número más largo. Sin embargo, podría usar cualquiera de estas líneas en un script bash si tuviera la necesidad de hacerlo. Esta segunda opción podría ser mejor para situaciones en las que la primera también falla.

Método 4: creación de scripts de bash para devolver números aleatorios

Si desea tener una herramienta útil para generar un número aleatorio en cualquier momento, puede crear un script de línea de comandos para hacerlo. Esto no usa más que el lenguaje bash estándar que tienen la mayoría de las indicaciones de Linux modernas, por lo que prácticamente cualquier distribución de Linux moderna y algunos de los sistemas operativos basados ​​en BSD deberían manejar esto bien. Es posible que desee utilizar cd ~ / .local / bin antes de continuar para asegurarse de que tendrá su script en un lugar donde pueda ejecutarlo desde cualquier lugar.

Escriba nano random o vi random para comenzar, aunque puede usar un nombre diferente para su script si lo desea. También puede utilizar otro editor de texto si lo prefiere. Supongamos que desea crear uno que devuelva 1 o 0 cuando se escriba en la línea de comando. Ingrese lo siguiente y luego presione Ctrl + O para guardarlo si está usando nano:

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

Escriba Ctrl + X para salir del editor de texto y, una vez de regreso en la línea de comando, use chmod + x random para que su script sea utilizable. Por supuesto, podría usar ranNum = $ [RANDOM% 10 + 1], ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom))) o cualquier otra línea en lugar de ranNum = $ (($ RANDOM% 2)) para poder controlar exactamente qué tipo de número desea recuperar. Supongamos que desea seleccionar un número entre 1 y 50 con regularidad. Cambie el texto de la secuencia de comandos de bash a:

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

Ahora puede ejecutarlo fácilmente desde la línea de comandos escribiendo aleatorio siempre que desee generar un número aleatorio.

4 minutos de lectura