
Estoy intentando crear un script que convierta a un usuario ftp, pero sigue fallando y no sé por qué. Si hago eco del comando, está bien y puedo copiarlo y pegarlo para crear el usuario, pero si ejecuto el comando en el script bash, no se puede crear el usuario.
El único error que recibo es la sección de ayuda del comando useradd.
¿Alguien sabe qué estoy haciendo mal?
#!/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
Respuesta1
cambiar;
$final
a;
eval "$final"