Frankenstein schrieb:
Das wäre jetzt meine aktuelle Lösung
User
| sudo_user=`${read -p "Bitte gib einen SSH Benutzernamen an: "}`
user_password=`${read -p "Bitte gib ein Passwort an: "}`
useradd -m ${sudo_user} -p ${user_password} &> /dev/null
usermod -aG sudo ${sudo_user} $> /dev/null
|
Ausprobiert hast Du das aber nicht, oder?
Die Syntax ${x}
benutzt man, wenn man eine Variable x, die aber kein Leerzeichen enthalten darf, keine Anführungsstriche und auch keinen Doppelpunkt, zu dereferenzieren. Insbesondere wenn man unmittelbar etwas ankleben möchte, wie bei echo ${USER}chen
.
So ähnlich sieht aus was sich command substitution nennt.
| sudo_user=`$(read -p "Bitte gib einen SSH Benutzernamen an: ")`
|
Allerdings hast Du mit den Backticks schon eine Command-Substitution, die aber inferior ist, da sie veraltet, nicht portabel und je nach Font auch schlecht zu lesen ist.
Weg damit!
| sudo_user=$(read -p "Bitte gib einen SSH Benutzernamen an: ")
|
Jetzt liefert dummerweise read aber keinen Output, daher wird sudo_user immer leer sein. Das muss Dich aber nicht bekümmern - im ersten Entwurf hattest Du es ja richtig:
| read -p "Bitte gib einen SSH Benutzernamen an: " sudo_user
|
Vorab leere Variablen zu definieren war aber überflüssig und sinnlos.
Analog für's user_password.
Auch scheint es nicht sinnvoll die Fehlermeldungen nach /dev/null umzulenken, denn es können ja Fehler auftreten, und dann wüsste man gerne Bescheid - etwa unzulässige Zeichen im Usernamen. Per se scheint es eine gute Idee, den Usernamen auf zulässige Zeichen zu testen, und sonst frühzeitig mit einer hilfreichen Nachricht abzubrechen. Evtl. auch auf die Länge des Usernamens und darauf, ob dieser bereits belegt ist.
Usermod und -add benötigen Sudorechte, da sollte ein sudo davor. Die ersten zwei Kommandos (plus vorgeschlagene Fehlerbehandlung) benötigen dagegen keine, daher ist es nicht verkehrt, diese erst im Skript zu holen.
SSH Key
| key_passphrase=`$(read -p "Bitte gib eine Passphrase für deinen SSH Private Key ein: ")`
ssh_key=`ssh-keygen -t ed25519 -N ${key_passphrase} -f /root/.ssh/id_ed25519.pub`
|
Siehe oben.