Files
bash/snippets/passwd_generator-02.sh
2026-03-04 14:03:46 +01:00

63 lines
1.6 KiB
Bash
Executable File

#!/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 ""