2013-07-15 13 views
6

Pracuję z Bash. Chcę wygenerować ciąg randrom według czasu systemowego. Długość unikatowego ciągu musi wynosić od 10 do 30 znaków.Czy komukolwiek możesz mi pomóc?Losowy ciąg w systemie Linux według czasu systemowego

+1

Czy to jest losowe? Lub w jakiś sposób określony przez czas systemowy? – Thilo

+0

W jakim języku? C, C++, Bash, Python, Perl? –

+2

co powiesz na 'date | md5' – suspectus

Odpowiedz

10

Istnieje wiele sposobów, aby to zrobić, moim ulubionym użyciem urządzenia urandom:

[email protected]:~$ tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1 
CCI4zgDQ0SoBfAp9k0XeuISJo9uJMt 
  • tr (tłumacz) zapewnia, że ​​tylko litery są pokazane
  • fold będą zawijać do 30 znaków szerokości
  • head zapewnia, że ​​otrzymamy tylko pierwszą linię

Aby użyć bieżącego czasu systemowego (jak masz ten konkretny wymóg):

[email protected]:~$ date +%s | sha256sum | base64 | head -c30; echo 
NDc0NGQxZDQ4MWNiNzBjY2EyNGFlOW 
  • date +%s = to jest nasza data nasion oparty
  • Prowadzimy go przez kilka skrótów, aby uzyskać " random”string
  • w końcu obciąć go do 30 znaków

Inne sposoby (w tym dwóch Wymienię ed powyżej) są dostępne pod this page i innych, jeśli po prostu google.

4

Może możesz użyć uuidgen -t.

Generowanie opartego na czasie identyfikatora UUID. Ta metoda tworzy identyfikator UUID na podstawie zegara systemowego plus adres sprzętowy systemu Ethernet, jeśli jest obecny.

+0

Dzięki. Ale musi to być od 10 do 30 – mindia

+0

1b4e28ba-2fa1-11d2-883f-b9a761bde3fb: 32 cyfry (nie licząc ukośników). Można użyć kodowania Base32 zamiast Base16. – Thilo

0

Niedawno przygotowałem skrypt do obsłużenia tego, wyjście jest 33-cyfrową sumą kontrolną md5, ale można ją przyciąć przy pomocy sed pomiędzy 10-30.

E.g. gen_uniq_id.bsh | sed 's/\(.\{20\}\)\(.*$\)/\1/'

Skrypt jest dość odporny - wykorzystuje aktualny czas do nanosekund,/dev/urandom, dane ruchów myszy i pozwala na opcjonalną zmianę czasów zbierania danych losowych i kolekcji danych myszy.

Posiada również opcję -s, która pozwala na dołączenie dodatkowego argumentu łańcuchowego, dzięki czemu można dowolnie losować ziarno.

https://code.google.com/p/gen-uniq-id/

Powiązane problemy