0

これは、ユーザーを電子メールのMySQLデータベースに追加し、引数が定義されている場合はそのユーザーにエイリアスを割り当て、ユーザーにウェルカムメールを送信し、他のすべてのユーザーに新参者について通知する電子メールを送信するための小さなスクリプトです。しかし、スクリプトを実行しようとするたびに、メッセージが表示されるだけですUNEXPECTED END OF FILE。スクリプトは次のとおりです。

#! /bin/bash

USER=$1
SECTOR=$2

if [ -z "${SECTOR}" ];
then
   mysql --host=localhost --user=verysecretdatabaseuser --password=verysecretdatabasepass mydatabase << EOF
   insert into users (email,name,uid,gid,homedir,maildir,crypt,force_change_pwd) values("${USER}@example.com.br","${USER}",1001,1001, "/var/mail/${USER}/","/var/mail/${USER}/.maildir/",ENCRYPT("verysecretdefaultpass"), "yes" );
   EOF
else
   mysql --host=localhost --user=verysecretdatabaseuser --password=verysecretdatabasepass mydatabase << EOF
   insert into users(email,name,uid,gid,homedir,maildir,crypt,force_change_pwd)  values("${USER}@example.com.br","${USER}",1001,1001,"/var/mail/${USER}/","/var/mail/${USER}/.maildir/",ENCRYPT("verysecretdefaultpass"), "yes" ); EOF
   insert into alias(alias,destination) values ("${SECTOR}@example.com.br", "${USER}@example.com.br");
   EOF
fi

# send e-mail so my postfix can create the mail directories 
/usr/sbin/sendmail -f me@example.com.br "${USER}@example.com.br" << EOF
Subject: Bem Vindo!
Seja bem vindo ao Servidor de e-mails da Empresa! Com muito orgulho hospedamos nosso e-mail        em nosso próprio servidor. Em caso de dúvidas contacte <me@example.com.br>
.
EOF

# fetching everyone already in the database
users=`mysql --user=myverysecretuser --password=myverysecretpass -s -N -e "SELECT myverysecretfield FROM    myverysecretdatabase.myverysecretusertable"`

#sending an e-mail to each user
for user in $users
do
   echo "${user}"
   /usr/sbin/sendmail -f me@example.com.br "${user}" << EOF
   Subject: Funcionario novo!
   Prezados, deem as boas vindas ao funcionario novo "${USER}" que acabou de entrar no  departamento de "${SECTOR}". Para se comunicar com o funcionario novo, basta enviar e-mails   para: "${USER}@example.com.br". O funcionario novo tambem recebera e-mails que forem   enviados para "${SECTOR}@example.com.br".
   .
   EOF
done

私は何が間違っているのですか?

4

1 に答える 1

3

これを試して :

#! /bin/bash

USER=$1
SECTOR=$2

if [ -z "${SECTOR}" ];
then
   mysql --host=localhost --user=verysecretdatabaseuser --password=verysecretdatabasepass mydatabase << EOF
   insert into users (email,name,uid,gid,homedir,maildir,crypt,force_change_pwd) values("${USER}@example.com.br","${USER}",1001,1001, "/var/mail/${USER}/","/var/mail/${USER}/.maildir/",ENCRYPT("verysecretdefaultpass"), "yes" );
EOF
else
   mysql --host=localhost --user=verysecretdatabaseuser --password=verysecretdatabasepass mydatabase << EOF
   insert into users(email,name,uid,gid,homedir,maildir,crypt,force_change_pwd)  values("${USER}@example.com.br","${USER}",1001,1001,"/var/mail/${USER}/","/var/mail/${USER}/.maildir/",ENCRYPT("verysecretdefaultpass"), "yes" ); EOF
   insert into alias(alias,destination) values ("${SECTOR}@example.com.br", "${USER}@example.com.br");
EOF
fi

# send e-mail so my postfix can create the mail directories 
/usr/sbin/sendmail -f me@example.com.br "${USER}@example.com.br" << EOF
Subject: Bem Vindo!
Seja bem vindo ao Servidor de e-mails da Empresa! Com muito orgulho hospedamos nosso e-mail        em nosso próprio servidor. Em caso de dúvidas contacte <me@example.com.br>
.
EOF

# fetching everyone already in the database
users=`mysql --user=myverysecretuser --password=myverysecretpass -s -N -e "SELECT myverysecretfield FROM    myverysecretdatabase.myverysecretusertable"`

#sending an e-mail to each user
for user in $users
do
   echo "${user}"
   /usr/sbin/sendmail -f me@example.com.br "${user}" << EOF
   Subject: Funcionario novo!
   Prezados, deem as boas vindas ao funcionario novo "${USER}" que acabou de entrar no  departamento de "${SECTOR}". Para se comunicar com o funcionario novo, basta enviar e-mails   para: "${USER}@example.com.br". O funcionario novo tambem recebera e-mails que forem   enviados para "${SECTOR}@example.com.br".
   .
EOF
done

クロージングEOFは​​行の先頭にある必要があります。

dry-run次のモードでスクリプトをテストできます:

bash -n script.sh
于 2012-10-18T20:33:10.117 に答える