Hallo Zusammen, ich habe ein kleines Script zum Generieren von Zufallspasswörtern gebastelt. Das funktioniert auch beinahe wie gewünscht. Nur komischerweise enthält ein damit generiertes Passwort wirklich niemals einen Backslash. Ich vermute in Zeile 40 ist irgendwas falsch. Oder habe ich etwas komplett anderes übersehen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #!/bin/bash minlength=8 lengthenter=1 asciilimit=127 # der maximale Ergebniswert wäre "126", jedoch wird später "1" addiert. createPassword() { for ((i=0;i<$length;i++)); do charmatch=1 div=$1 while [ "$charmatch" -eq 1 ]; do if [[ $char != $charset ]]; then charnumber=$(($RANDOM%$div+1)) # zum Ergebnis wird "1" addiert, damit das Ergebnis niemals 0 ist. >> null-byte-error char=$(printf "\x$(printf %x $charnumber)") else charvalid=$char charnumber=$(($RANDOM%$div+1)) # zum Ergebnis wird "1" addiert, damit das Ergebnis niemals 0 ist. >> null-byte-error char=$(printf "\x$(printf %x $charnumber)") charmatch=0 fi done password=$password$charvalid done echo $password } while [ "$lengthenter" -eq 1 ]; do read -p "Gewünschte Länge des Passworts eingeben (mindestens acht Zeichen):" length if [ $length -lt $minlength ]; then echo "zu kurz" else lengthenter=0 fi done read -p "Sonderzeichen in Passwort erwünscht? y/n (Enter für \"yes\")" special if [ "$special" == "y" ] || [ -z "$special" ]; then charset="[\\a-zA-Z0-9!,;'\~@#\$%^\&*()_+=§\|\"\<\>-]" else charset="[a-zA-Z0-9]" fi createPassword $asciilimit |
Freue mich über jede Hilfe.