
Ich versuche, ein Skript zu erstellen, das einen (S)FTP-Benutzer erstellt, aber es schlägt immer fehl und ich weiß nicht, warum. Wenn ich den Befehl wiedergebe, ist alles in Ordnung und ich kann ihn kopieren und einfügen, um den Benutzer zu erstellen, aber wenn ich den Befehl im Bash-Skript ausführe, schlägt die Erstellung des Benutzers fehl.
Der einzige Fehler, den ich zurückbekomme, ist der Hilfeabschnitt des Useradd-Befehls.
Weiß jemand, was ich falsch mache?
#!/bin/bash
# at the top are all the functions at the bottem is the execution order
username()
{
echo Enter the username.
read USERNAME
echo
echo
echo
if [ -n "$USERNAME" ]; then
:
else
echo "You didn't supply a username"
username
exit 1
fi
echo "the username you have selected is " $USERNAME
read -p "Is this the username you would like to use? Yy/Nn " yn
case $yn in
[Yy]* ) echo ;;
[Nn]* ) username;;
* ) echo "Please answer yes or no."; username;;
esac
}
groups()
{
groeps=($(cat /etc/group | grep ftponly)) #productie
#groeps=($(cat group | grep ftponly)) #local test
read -p "$(
f=0
for groepname in "${groeps[@]}" ; do
# echo "$((++f)): $groepname"
echo "$((++f)): ${groepname:0:8}"
done
echo -ne 'Please select the groep you would like to use > '
)" selection
selected_groep="${groeps[$((selection-1))]}"
echo "you have selected " ${selected_groep:0:8}
read -p "is this the right group? Yy/Nn " yn
case $yn in
[Yy]* ) echo " " ;;
[Nn]* ) groups;;
* ) echo "Please answer yes or no."; groups;;
esac
}
ticket()
{
echo "Enter the ticket number"
read TICKET
echo
echo
if [ -n "$TICKET" ]; then
:
else
echo "you didnt supply a ticket number, to execute this you need to have a ticket number."
ticket
fi
}
endcommand()
{
echo
echo
DIR=/data/xchangeremote
final="/usr/sbin/useradd -g ${selected_groep:10:4} -c \"$USERNAME + $TICKET\" -d $DIR/./\"$USERNAME\" -s /usr/sbin/nologin \"$USERNAME\""
echo $final
echo "To check if the command is correct see example on: "
read -p "is the command correct now? Answer with: Yy/Nn " yn
case $yn in
[Yy]* ) echo ;;
[Nn]* ) echo "please enter the correct username"; username; groups; ticket; endcommand;;
* ) echo "Please answer yes or no."; endcommand;;
esac
PASSWORD=$(< /dev/urandom tr -dc '1234567890!@#$%qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM' | head -c12; echo "")
echo " the password for this account will be" $PASSWORD
$final
$USERNAME:$PASSWORD | chpasswd
}
#here are the functions called
username
groups
ticket
endcommand
Antwort1
ändern;
$final
Zu;
eval "$final"