update..
This commit is contained in:
62
snippets/passwd_generator-02.sh
Executable file
62
snippets/passwd_generator-02.sh
Executable file
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
LENGTH=$1
|
||||
LENGTH=${LENGTH:=12}
|
||||
|
||||
random_char() {
|
||||
local chars="$1"
|
||||
echo -n "${chars:RANDOM%${#chars}:1}"
|
||||
}
|
||||
|
||||
# Funktion zur Generierung eines zufälligen Strings mit den angegebenen Anforderungen
|
||||
generate_random_string() {
|
||||
local length="$1"
|
||||
|
||||
# Überprüfen, ob die Länge größer als 8 ist
|
||||
if [[ "$length" -le 8 ]]; then
|
||||
echo "Fehler: Die Länge muss größer als 8 Zeichen sein."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Zeichenmengen
|
||||
|
||||
# not allowed: 0ODl18B
|
||||
|
||||
local lower="abcdefghijkmnopqrstuvwxyz"
|
||||
#local upper="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
local upper="ACEFGHIJKLMNPQRSTUVWXYZ"
|
||||
#local digits="0123456789"
|
||||
local digits="2345679"
|
||||
#local special="!@#$%^&*()_+-=[]{}|;:,.<>?/"
|
||||
local special="__+---///...."
|
||||
|
||||
# Generiere mindestens ein Zeichen aus jeder Kategorie
|
||||
local random_string=$(random_char "$lower")
|
||||
random_string+=$(random_char "$upper")
|
||||
random_string+=$(random_char "$digits")
|
||||
random_string+=$(random_char "$special")
|
||||
random_string+=$(random_char "$special")
|
||||
|
||||
# Fülle den Rest der Zeichenkette mit zufälligen Zeichen aus allen Kategorien
|
||||
local all_chars="$lower$upper$digits$special"
|
||||
for (( i=${#random_string}; i<length; i++ )); do
|
||||
random_string+=$(random_char "$all_chars")
|
||||
done
|
||||
|
||||
# Mische die Zeichenkette, um die Reihenfolge der Zeichen zufällig zu machen
|
||||
random_string=$(echo "$random_string" | fold -w1 | shuf | tr -d '\n')
|
||||
|
||||
# Ausgabe des generierten Strings
|
||||
echo "$random_string"
|
||||
}
|
||||
|
||||
echo
|
||||
|
||||
for ((i=0; i<=9; i++)); do
|
||||
|
||||
echo -en "\t$i: "
|
||||
echo "$(generate_random_string "${LENGTH}")"
|
||||
|
||||
done
|
||||
|
||||
echo ""
|
||||
Reference in New Issue
Block a user