#! /usr/bin/gawk -f # generator hasel losowych BEGIN{ # analizuje podane argumenty pwlen = 8; if (ARGC == 1) { pwcount = 1; } if (ARGC == 2) { pwcount = 0 + ARGV[1]; # zapewnia konwersje do liczby } if (ARGC == 3) { pwcount = 0 + ARGV[2]; pwlen = 0 + ARGV[1]; } if (ARGC > 3) { print ARGV[0] ": zbyt wiele argumentow wywolania skryptu." > "/dev/stderr"; # niestety wypisze "gawk: ...", nie ma prostego sposobu # by w skrypcie odwolac sie do jego nazwy (pliku) exit 1; } if (!(pwcount > 0 && pwlen > 0)) { print ARGV[0] ": niewlasciwe argumenty dla skryptu." > "/dev/stderr"; exit 2; } ARGC = 2; ARGV[1] = "/dev/null"; # nie bedzie czekal na dane wejsciowe znaki = "ABCDEFGHJKLMNPQRSTUVWXYZ1234567890+-=?$#"; # zmieniajac `znaki' mozna wybrac inny zestaw znakow do tworzenia hasel split(znaki, repertuar, ""); rlen = length(znaki); srand(); # bez tego za kazdym uruchomieniem wyskocza te same hasla! } function haslo(len, wynik) { wynik = ""; # to jest zmienna lokalna while (len--) wynik = (wynik repertuar[1 + int(rlen * rand())]); # elementy tablicy `repertuar' numerowane sa od 1 # bo wypelnila ja `split()'! return wynik; } END{ while (pwcount--) print haslo(pwlen); } # oczywiscie to tez moglo byc w BEGIN ale tak jest troszke moze czytelniej