Cum se setează variabile bash la numere aleatorii



Încercați Instrumentul Nostru Pentru Eliminarea Problemelor

Puteți genera cu ușurință un număr aleator la promptul bash, pe care îl puteți utiliza apoi pentru a seta numărul respectiv ca o variabilă. Acest lucru este util pentru orice, de la scrierea anumitor tipuri de scripturi până la rularea aventurilor de jocuri de rol de pe masă. Fie că s-ar putea să scrieți o campanie de D&D sau să creați un utilitar în limbajul bash puternic, puteți obține de obicei o singură linie de cod. Acesta este, de asemenea, un instrument foarte util atunci când încercați să pregătiți anumite verificări de securitate, dar veți dori să vă amintiți că crackerii buni pot ocoli aceste simple generatoare de numere. Sunt încă utile pentru generarea anumitor tipuri de parole și cod, care ar putea ajuta la menținerea siguranței oricum.



Există câteva modalități diferite de a realiza acest lucru și nu fiecare tehnică este potrivită pentru fiecare situație, așa că am făcut tot posibilul să aruncăm o privire în fiecare mod și să-l testăm pentru a ne asigura că funcționează. Pentru aceasta, va trebui să lucrați de la un terminal, deci fie folosiți Ctrl + Alt + T sau Super (Windows) + T pentru a deschide un terminal grafic, începeți unul tastând terminal în Dash, selectați-l din aplicație sau Whisker și meniurile Instrumente de sistem sau vă îndreptați către un terminal virtual cu seriozitate folosind Ctrl, Alt și o tastă între F1 și F6.



Metoda 1: Alegerea unui octet aleatoriu complet

Puteți genera un număr aleatoriu între 1 și 256 executând următoarea comandă direct din promptul bash:



din -An -N1 -tu1 / dev / urandom

Deși uneori este posibil să vedeți această comandă referită la / dev / random în loc de / dev / urandom, probabil că nu veți dori să rulați în acest fel. Acest lucru poate împiedica în mod neintenționat alte programe de a putea utiliza generatorul de semințe aleatorii în timpul utilizării acestuia. După ce ați rulat programul și ați obținut un număr, puteți fi sigur că va funcționa și în acest fel:



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

Aceasta va seta variabila ranNum la un număr între 1 și 256, selectat în momentul în care îl rulați. Îl puteți rula din linia de comandă sau din interiorul unui script și ar trebui să funcționeze în orice mod. Rețineți că puteți înlocui ranNum cu orice nume de variabilă validă.

Metoda 2: Setarea unei variabile la un număr aleatoriu între 1 și orice

Puteți rula echo $ [RANDOM% 40 + 1] din linia de comandă pentru a trimite un număr aleatoriu între 1 și 40 direct la ieșirea standard, dar puteți înlocui și 40 din comandă cu practic orice număr. În cele din urmă, arhitectura mașinii dvs. gazdă va rămâne fără cifre sau, probabil, bash, dar este îndoielnic că oricum aveți nevoie de un număr atât de mare.

Să presupunem că doriți să generați un număr aleatoriu între 1 și 10 pentru configurația variabilă. Ai putea fugi:

ranNum = $ [RANDOM% 10 + 1]

Rețineți că puteți înlocui 10 cu orice valoare superioară doriți. Această valoare este inclusivă, ceea ce înseamnă că 10 este o cifră validă returnată. Dacă ați dorit să o reduceți cu una, faceți pur și simplu valoarea 9 în loc să utilizați matematica stilului C sau C ++ -1. Acestea nu sunt necesare atunci când setați o variabilă utilizând această metodă și vor genera de fapt rezultate neașteptate prin adăugarea sau scăderea cifrelor.

Metoda 3: Selectarea unui singur bit aleatoriu

Dacă trebuie să setați o variabilă la un bit aleatoriu de zero sau unul, atunci poate doriți să modificați codul anterior după cum urmează:

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

Acest cod va seta ranNum fie 1, fie 0, în funcție de numerele pe care le-a prelevat din / dev / urandom fișierul era par sau impar. Acest lucru poate fi util dacă trebuie să setați o ecuație simplă de da sau nu la una sau la cealaltă stare.

Dacă acest lucru nu este suficient de aleatoriu pentru ceea ce lucrați, atunci puteți obține un număr puțin mai aleatoriu făcând un apel către directorul / proc / sys / kernel / random cu:

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

Din nou, totuși, aceasta va seta doar variabila la 1 sau 0, ceea ce este perfect pentru logica binară, dar nu la fel de util pentru momentele în care este posibil să aveți nevoie de un număr mai lung. Cu toate acestea, puteți utiliza oricare dintre aceste linii într-un script bash dacă ați avea nevoie să faceți acest lucru. Această a doua opțiune ar putea fi de fapt mai bună pentru situațiile în care prima nu reușește

Metoda 4: Crearea scripturilor bash pentru a returna numerele aleatorii

Dacă doriți să aveți un instrument la îndemână pentru generarea unui număr aleatoriu în orice moment, atunci puteți crea un script de linie de comandă pentru a face acest lucru. Aceasta nu folosește altceva decât limbajul bash standard pe care îl au cele mai multe solicitări Linux moderne, deci aproape orice distribuție Linux modernă și destul de multe dintre sistemele de operare bazate pe BSD ar trebui să se descurce foarte bine. Poate doriți să utilizați cd ~ / .local / bin înainte de a merge mai departe pentru a vă asigura că veți avea scriptul într-un loc pe care îl puteți executa de oriunde.

Tastați nano random sau vi random pentru a începe, deși ați putea folosi un alt nume pentru script, dacă doriți. De asemenea, puteți utiliza și un alt editor de text, dacă preferați. Spuneți că doriți să creați unul care să returneze fie 1, fie 0 atunci când ați fost tastat pe linia de comandă. Introduceți următoarele și apoi apăsați Ctrl + O pentru a le salva dacă utilizați nano:

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

Tastați Ctrl + X pentru a ieși din editorul de text și o dată înapoi la linia de comandă utilizați chmod + x aleatoriu pentru a vă face scriptul utilizabil. Puteți folosi desigur ranNum = $ [RANDOM% 10 + 1], ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom))) sau orice altă linie în locul ranNum = $ (($ RANDOM% 2)), astfel încât să puteți controla exact ce fel de număr doriți înapoi. Să presupunem că ați dorit să selectați în mod regulat un număr între 1 și 50. Schimbați textul scriptului bash în:

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

Acum îl puteți rula cu ușurință din linia de comandă tastând aleatoriu ori de câte ori doriți să generați un număr aleatoriu.

4 minute citite