posix システムにてパスワードを生成するには?


posix 規格に対してポータブルな、パスワード生成シェルスクリプトはどのようなものになりますか?
パスワードは、ひとまずアルファベット(大文字・小文字)+数字で生成できればいいと考えています。




乱数の生成には `awk` の `rand()` が使えます。  
ただ、種の決定をどうするのがよいのか、自信がないです。  
[Directory Structure and
Devices](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap10.html)
に `/dev/urandom`
は無いですし、[date](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html)コマンドでナノ秒などを取得することもできないようです。  
とりあえず以下では、秒までの時間とプロセスIDを使っています。

[code]

    #!/bin/sh
    seed=$(( $(date +%y%j%H%M%S) + $$))
    
    awk -v seed="$seed" -f - <<__AWK__
    BEGIN{
        len = 20
        chars = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    
        srand(seed)
        chars_num = length(chars)
        for (i=0; i<len; ++i) {
            c = int(rand() * chars_num) + 1
            printf("%s", substr(chars, c, 1))
        }
        printf("\n")
    }
    __AWK__
    
[/code]




乱数の生成には `awk` の `rand()` が使えます。  
ただ、種の決定をどうするのがよいのか、自信がないです。  
[Directory Structure and
Devices](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap10.html)
に `/dev/urandom`
は無いですし、[date](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html)コマンドでナノ秒などを取得することもできないようです。  
とりあえず以下では、秒までの時間とプロセスIDを使っています。

[code]

    #!/bin/sh
    seed=$(( $(date +%y%j%H%M%S) + $$))
    
    awk -v seed="$seed" -f - <<__AWK__
    BEGIN{
        len = 20
        chars = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    
        srand(seed)
        chars_num = length(chars)
        for (i=0; i<len; ++i) {
            c = int(rand() * chars_num) + 1
            printf("%s", substr(chars, c, 1))
        }
        printf("\n")
    }
    __AWK__
    
[/code]

