RSS-Feed anzeigen

jahlives

Script für Zufallspasswörter

Bewerten
Ich war auf der Suche nach einem Script, um auf der Kommandozeile, schnell ein starkes Passwort zu generieren. Wichtig war mir, dass es Shellscript läuft und nicht mit Perl oder Python.
Nach einigen Minuten suchen habe ich aufgegeben und mir folgende Zeilen getippt, die ein starkes Passwort generieren. Dazu wird auf /dev/urandom gesetzt. Externe Programme braucht es nicht. Solange /dev/urandom vorhanden ist und daneben Standarttools wie head und tr
Code:
#!/bin/bash


# loop count for length of string
counter=0
# defines the length of the string
if [ "x$1" != 'x' ] ; then
 end=$1
else
 end=16
fi
# if set to 1 ALL ASCII chars from dec 0 to dec 255 are used --> allowedChars is not honored, only deniedChars is applied if set to non-empty string
# if set to 0 only chars allowed by allowedChars and not forbidden by deniedChars are used
all=0


# there are different ways to specify allowed/denied chars
# char ranges and single chars can be combined 
allowedChars='a-zA-Z0-9~!@#$%^&*_=)(/~?-'
# or named char classes
# http://www.computerhope.com/unix/utr.htm
#allowedChars='[:print:]'
deniedChars='[:blank:]'
# empty string menas no chars are forbidden
#deniedChars=''
if [ $all -eq 0 ] ; then
 # loop end-1 times
 while [ $counter -lt $end ] ; do
  # get a random byte from /dev/urandom and see if it's within allowed and not denied chars
  x="$(head -c 1 /dev/urandom | tr -dc "${allowedChars}" | tr -d "${deniedChars}")"
  # keep reading one byte while no allowed char
  while [ "x$x" = 'x' ] ; do
   x="$(head -c 1 /dev/urandom | tr -dc "${allowedChars}" | tr -d "${deniedChars}")"
  done
  counter=$(( $counter+1 ))
  # print the char
  echo -n "$x"
 done
else
 while [ $counter -lt $end ] ; do
  x="$(head -c 1 /dev/urandom | tr -d "${deniedChars}")"
  while [ "x$x" = 'x' ] ; do
   x="$(head -c 1 /dev/urandom | tr -d "${deniedChars}")"
  done
  counter=$(( $counter+1 ))
  echo -n "$x"
 done
fi

Aktualisiert: 27.08.2015 um 14:56 von jahlives

Kategorien
Diskstation , Linux

Kommentare