Minha maneira favorita de fazer isso é usar /dev/urandom junto com tr para excluir caracteres indesejados. Por exemplo, para obter apenas dígitos e letras:
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 ; echo ''
Como alternativa, para incluir mais caracteres do < a href="https://www.owasp.org/index.php/Password_special_characters"> lista de caracteres especiais da senha OWASP :
</dev/urandom tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_'{|}~' | head -c 13 ; echo
Se você tiver alguns problemas com tr reclamando sobre a entrada, tente adicionar LC_ALL=C assim:
LC_ALL=C tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_'{|}~' </dev/urandom | head -c 13 ; echo