Hogyan állítsuk be a bash változókat véletlenszámokra



Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére

Könnyedén előállíthat egy véletlenszerű számot a bash parancssorban, amelyet felhasználva beállíthatja az említett számot változóként. Ez mindenben hasznos, bizonyos típusú szkriptek írásától kezdve az asztali szerepjáték-kalandok futtatásáig. Akár D&D kampányt ír, akár egy segédprogramot ír a bash erős nyelvén, általában egyetlen kódsorral megúszhatja. Ez egy nagyon hasznos eszköz bizonyos biztonsági ellenőrzések előkészítésének megkísérlésénél is, de ne feledje, hogy a jó crackerek megkerülhetik ezeket az egyszerű számgenerátorokat. Ezek továbbra is hasznosak bizonyos típusú jelszavak és kódok előállításához, amelyek amúgy is segíthetnek a dolgok biztonságában.



Ennek megvalósítására néhány különböző módszer létezik, és nem minden technika felel meg minden helyzetnek, ezért mindent megtettünk, hogy szemügyre vegyük az egyes utakat, és teszteltük, hogy működjön-e. Ehhez terminálról kell dolgoznia, ezért vagy használja a Ctrl + Alt + T vagy a Super (Windows) + T billentyűkombinációt egy grafikus terminál megnyitásához, kezdje el úgy, hogy beírja a terminált a Dash-be, válassza ki az alkalmazásból vagy a Whiskerből és a Rendszereszközök menüibe, vagy komolyan lépjen a virtuális terminálra a Ctrl, Alt, valamint az F1 és F6 közötti billentyű használatával.



1. módszer: Teljes véletlenszerű bájt kiválasztása

1 és 256 közötti véletlen számot generálhat, ha a következő parancsot futtatja közvetlenül a bash parancssorból:



-An -N1 -tu1 / dev / urandom

Bár néha előfordulhat, hogy erre a parancsra a / dev / random hivatkozik a / dev / urandom helyett, valószínűleg nem így akarja futtatni. Ez akaratlanul elrabolhatja más programokat attól, hogy a véletlen vetőmag-generátort használhassák az Ön használata során. Miután futtatta a programot, és kapott egy számot, biztos lehet benne, hogy ez így is fog működni:



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

Ez a ranNum változót 1 és 256 közötti számra állítja be, amelyet a futtatásakor választottak ki. Futtathatja a parancssorból vagy a parancsfájl belsejéből, és mindkét irányban működnie kell. Ne feledje, hogy a ranNum bármely érvényes változónévvel helyettesíthető.

2. módszer: Változó beállítása véletlenszerű számra 1 és bármi között

Az echo $ [RANDOM% 40 + 1] parancssorból futtathat egy véletlen számot 1 és 40 között egyenesen a standard kimenetre, de a parancsban levő 40-et gyakorlatilag bármilyen számmal helyettesítheti. Végül a fogadó gép architektúrája elfogy a számjegyekből, vagy talán nem lesz elég, de kétséges, hogy mindenképpen szükség van ilyen magas számra.

Tegyük fel, hogy 1 és 10 közötti véletlen számot szeretne létrehozni a változó konfigurációhoz. Futtathatja:

ranNum = $ [RANDOM% 10 + 1]

Ne feledje, hogy a 10-et bármely kívánt felső értékkel helyettesítheti. Ez az érték magában foglalja, ami azt jelenti, hogy a 10 egy érvényes eredmény. Ha eggyel csökkenteni akarta, akkor egyszerűen adja meg a 9 értéket a C vagy C ++ stílus -1 matematika helyett. Ezek nem szükségesek, ha egy változót ezzel a módszerrel állítanak be, és számjegyek hozzáadásával vagy kivonásával valóban váratlan eredményeket generálnak.

3. módszer: Egyetlen véletlenszerű bit kiválasztása

Ha egy változót véletlenszerű nulla vagy egy véletlen bitre kell állítania, akkor az előző kódot az alábbiak szerint módosíthatja:

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

Ez a kód a ranNum értéket 1-re vagy 0-ra állítja, attól függően, hogy a számok, amelyekből mintát vett a / dev / urandom fájl páros vagy páratlan volt. Ez akkor lehet hasznos, ha egyszerű igen vagy nem egyenletet kell beállítania egyik vagy másik állapotra.

Ha ez nem elég véletlenszerű ahhoz, amin dolgozik, akkor egy kicsit véletlenszerűbb számot kaphat, ha felhívja a / proc / sys / kernel / random könyvtárat a következővel:

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

Még egyszer, ez azonban csak a változót állítja 1-re vagy 0-ra, ami tökéletes a bináris logikához, de nem olyan hasznos, amikor hosszabb számra van szüksége. Használhatja azonban e sorok bármelyikét egy bash szkriptben, ha erre szüksége lenne. Ez a második lehetőség valójában jobb lehet olyan helyzetekben, amikor az első is kudarcot vall

4. módszer: A bash szkriptek készítése véletlenszerű számok visszaadására

Ha bármikor hasznos eszköze van egy véletlenszám előállításához, akkor létrehozhat egy parancssori parancsfájlt ehhez. Ez nem használ mást, mint a legtöbb modern Linux felszólításnak megfelelő szabványos bash nyelvet, tehát nagyjából minden modern Linux disztribúciót és a BSD-alapú operációs rendszerek közül jó néhánynak ezt kell kezelnie. A továbblépés előtt érdemes használni a cd ~ / .local / bin alkalmazást, hogy megbizonyosodjon arról, hogy a szkriptje olyan helyen van, ahol bárhonnan végrehajthatja.

Írja be a nano random vagy a vi random elemet a kezdéshez, bár szeretne más nevet is használni a szkripthez, ha szeretné. Használhat másik szövegszerkesztőt is, ha szeretné. Tegyük fel, hogy létre akart hozni egy olyan értéket, amely 1 vagy 0 értéket ad vissza, amikor beírja a parancssorba. Írja be a következőket, majd nyomja meg a Ctrl + O billentyűkombinációt a mentéshez, ha nano-t használ:

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

Írja be a Ctrl + X billentyűkombinációt a szövegszerkesztőből való kilépéshez, majd a parancssorba való visszatéréshez használja a chmod + x random elemet a szkript használhatóvá tételéhez. Természetesen használhatná a ranNum = $ [RANDOM% 10 + 1], a ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom)) vagy bármely más sort a ranNum = $ (($ RANDOM% 2)), így pontosan szabályozhatja, hogy milyen számot szeretne visszaküldeni. Tegyük fel, hogy rendszeresen 1 és 50 közötti számot szeretett volna kiválasztani. Módosítsa a bash szkript szövegét a következőre:

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

Most már egyszerűen futtathatja a parancssorból a véletlenszerű beírásával, amikor csak véletlenszerű számot szeretne létrehozni.

4 perc olvasás