我正在尝试编写一个脚本来创建 (s)ftp 用户,但它一直失败,我不知道为什么。如果我回显该命令,就可以了,我可以复制并粘贴它来创建用户,但如果我在 bash 脚本中执行该命令,则无法创建用户。
我得到的唯一错误是 useradd 命令的帮助部分。
有人知道我做错了什么吗?
#!/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
答案1
改变;
$final
到;
eval "$final"