Portál AbcLinuxu, 12. května 2025 09:33

Dotaz: BASH: 255 nahodnych adresarov s dlzkou znakov 50

6.9.2012 16:32 A
BASH: 255 nahodnych adresarov s dlzkou znakov 50
Přečteno: 250×
Odpovědět | Admin
Zdravim, niesom nejak zbehly v bashi ale potreboval by som poradit co najjednoduchsi skript na vytvorenie 255 adresarov s presnou dlzkou znakov (v tomto pripade na 50 znakov - velke a male pismena bez diakritiky + cisla a specialne znaky). Vrela vdaka za kazdy odkaz alebo pomoc.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.9.2012 17:00 NN
Rozbalit Rozbalit vše Re: BASH: 255 nahodnych adresarov s dlzkou znakov 50
Odpovědět | | Sbalit | Link | Blokovat | Admin
for dir in {1..10}; do mkdir `cat /dev/urandom | tr -dc [:alnum:] | head -c 50`; done
6.9.2012 21:38 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: BASH: 255 nahodnych adresarov s dlzkou znakov 50
Odpovědět | | Sbalit | Link | Blokovat | Admin
dir in {1..256}; do mktemp -d $(printf 'X'%.0s {1..50}) 1>/dev/null; done

Toto riesenie je rychlejsie ako predchadzajuce (hovorime o 5s versus 1,2s v prospech mojho riesenia pri 255 adresaroch), ale osobne si myslim, ze je to uplne jedno az po situaciu, kedy sa vytvara adresarova struktura v dakych kratkych pravidelnych intervaloch.

Takze mas dve riesenia a je zrejme jedno, ktore si vyberies v tvojom pripade, bo to viac menej znie ako jednorazova zalezitost.

6.9.2012 22:43 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: BASH: 255 nahodnych adresarov s dlzkou znakov 50

Neviem, kde zmizlo to "for" :-D

for dir in {1..256}; do mktemp -d $(printf 'X'%.0s {1..50}) 1>/dev/null; done
6.9.2012 23:23 A
Rozbalit Rozbalit vše Re: BASH: 255 nahodnych adresarov s dlzkou znakov 50
Dakujem. Bude to dlhodobejsia zalezitost -> nemozem velmi spresnovat ale kedze PHP generovanie neprichadza do uvahy musim generovat nahodne sub-adresare pre http server, ulozit zoznam a na druhy den tie stare zo zoznamu zmazat, vytvorit nove, a tie naplnit...
7.9.2012 06:19 George O.
Rozbalit Rozbalit vše Re: BASH: 255 nahodnych adresarov s dlzkou znakov 50
Proc PHP nepripada v uvahu? A jinak by se jeste hodila kontrola na to, zda se adresar povedlo vytvorit (script se nepokousel vytvorit duplicitni - i kdyz 50 znaku je dost, nahoda je svine :-) )

Jinak tak nejak ze zvedavosti - proc generujes pro http server nejake nahodne adresare?:-)
7.9.2012 08:20 A
Rozbalit Rozbalit vše Re: BASH: 255 nahodnych adresarov s dlzkou znakov 50
Proc PHP nepripada v uvahu?
Lebo to bude bezat na ARM masinke so 64MB RAM ktora ma iba micro_httpd (trosku upravene zdrojaky).
A jinak by se jeste hodila kontrola na to, zda se adresar povedlo vytvorit (script se nepokousel vytvorit duplicitni - i kdyz 50 znaku je dost, nahoda je svine :-) )
Ja prave preto davam 50 znakov aby ta pravdepodobnost bola co najnizsia a ty ma takto zneistis? :-D Ale uz pozeram direktivu IF pre BASH a budem to kontrolovat pri cykle.
Jinak tak nejak ze zvedavosti - proc generujes pro http server nejake nahodne adresare?:-)
Ked ti to napisem porusim zmluvu :-P Musi ti stacit to ze to bude zbierat a publikovat udaje 50 roznym uzivatelom. ;-)
7.9.2012 08:29 George O.
Rozbalit Rozbalit vše Re: BASH: 255 nahodnych adresarov s dlzkou znakov 50
Fajn :-)

Btw tezko muze nejaky anonymni uzivatel "A" porusit smlouvu konverzaci o nejmenovanem serveru a jeho sluzbe, pokud ji nema sepsanout prave takto (sepsanou na uzivatele A a libovolnou sluzbu) :-)
7.9.2012 10:03 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: BASH: 255 nahodnych adresarov s dlzkou znakov 50
Pokud máš dobrý náhodný generátor, kolizemi se trápit nemusíš. Při 64 možných hodnotách každého znaku je praděpodobnost kolize něco jako 1e-48 při generování jednoho řetězce každou milisekundu po 100 let. Podívej se třeba na wiki na "Birthday paradox". To už je větší pravděpodobnost, že nějaká náhodná fluktuace změní hodnotu filedescriptoru v paměti na sousední adresář. :) Zas použít mktemp asi nic nezkazí ... pokud je tedy dobře implementovaný -- pozor, to nemusí platit vždy a všude.

Jiná věc je, že vyrobit "dostatečně nedeterministický" generátor na embedded platformě nemusí být úplně jednoduché. Pokud je cílem jen vyrábět neuhádnutelné názvy adresářů, může být nejjednodušší použít prostý rostoucí numerický index + osolit a následně prohnat vhodným deterministickým hashovacím algoritmem.
7.9.2012 10:07 kuka
Rozbalit Rozbalit vše Re: BASH: 255 nahodnych adresarov s dlzkou znakov 50
Pokud chces mit jistotu unikatnosti, vyhrad posledni dve mista v kodu na poradi adresare.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.