2016-10-30 6 views
1

Ich schreibe gerade ein Skript für die automatische Einrichtung eines neuen Servers mit FTP und Apache, aber ich möchte nicht schreiben, welches Passwort sie verwenden sollten, also wollte ich es mit dem generieren aktuelle Zeile.Erzeuge Passwort in bash store in Variable

< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12 

aber es ist nicht zu funktionieren scheint, wenn ich es in einer Variablen setzen:

PASSGEN="< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12" 
FTPPASS=$(eval $PASSGEN) 
DBPASS=$(eval $PASSGEN) 
echo $FTPPASS 

, wenn ich das ändern, wenn PassGen String Datum ist funktioniert gut. Gibt es etwas, das ich komplett verpasst habe?

+1

Als Nebenwirkung: der Operand passieren zu 'tr' sollte' 'sein _A-Za-z0-9-'' - keine Notwendigkeit, mit der Bereiche zu trennen '-': legen Sie sie rechts neben jedem andere. '-' am _end_ stellt sicher, dass es nicht mit einem Teil eines Bereichs verwechselt werden kann. – mklement0

+1

in Ordnung chears, yeah ich fragte mich, aber ich kopierte nur, was ich im Web für die Generation –

Antwort

2

Du eine $ vor dem Variablennamen ($PASSGEN) fehlt, wie Sie die Variable Expansion wollen zuerst:

FTPPASS=$(eval "$PASSGEN") 

Auch all-Großvariablennamen verwendet, ist keine gute Idee für benutzerdefinierte Variablen wie diese werden normalerweise für Umgebungsvariablen verwendet. Auch das Speichern des Kennworts in einer Variablen ist abhängig von Ihrer Umgebung möglicherweise keine gute Idee.


EDIT:

Ich schlage vor, Sie Befehl Substitution verwenden $() statt, keine Notwendigkeit für eval:

$ PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12) 

$ echo $PASSGEN 
zT52YgWXoXcW 
+0

Entschuldigung fand, dass Misstype in der Post konnte nicht kopieren von meinem Kitt Client –

+0

@ HenrikBøgelundLavstsen Es funktioniert perfekt für mich sonst. – heemayl

+0

Sie haben Recht funktioniert jetzt falsch die Variable geschrieben, whoops –

0

Sie eine Variable verwenden, wenn Sie eine Funktion verwenden sollten.

passgen() { 
    < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12 
} 

ftp_pass=$(passgen) 
db_pass=$(passgen) 
echo "$ftp_pass" 
echo "$db_pass"