J'essaye de valider un email avec un script shell. Existe-t-il un exemple simple pour valider un mail? Demandé google mais juste trouvé la merde et PHP (aussi merde ..).Valider les emails avec Bash
Merci et salutations.
J'essaye de valider un email avec un script shell. Existe-t-il un exemple simple pour valider un mail? Demandé google mais juste trouvé la merde et PHP (aussi merde ..).Valider les emails avec Bash
Merci et salutations.
Vous voulez dire quelque chose comme ça?
#!/bin/bash
# check for valid usage
if [ x$1 = 'x' ]
then
echo "Usage: $0 <email address>"
exit 1
fi
# grabbing fields
user=`echo $1 | cut -f1 -d\@`
host=`echo $1 | cut -f2 -d\@`
mxhost=`host -t mx $host | cut -f7 -d\ `
len=`echo $mxhost | wc -c`
len=`expr $len - 2`
mxhost=`echo $mxhost | cut -b1 -$len`
# compose email commands
echo -ne "helo test.com\r\n" > mailcmd
echo -ne "mail from: test\@test.com\r\n" >> mailcmd
echo -ne "rcpt to: $1\r\n" >> mailcmd
echo -ne "quit\r\n" >> mailcmd
# check for mail results
mailresult=`cat mailcmd | nc $mxhost 25| grep ^550 | wc -c`
if [ $mailresult -eq 0 ]
then
echo $1 "is valid"
exit 0
else
echo $1 "is not valid"
exit 1
fi
# clean up
rm mailcmd
à l'adresse: Fun things in Life - Simple Bash Email Validator
Ceci n'est pas un substitut pour parler SMTP correctement (attente après le HELO, et traitant multi réponses en ligne, etc.). Juste parce que quelque chose est sur le web quelque part ne veut pas dire que c'est utile. – ShiDoiSi
En outre, il est écrit dans un style compatible avec le shell Bourne et ne tire pas parti des fonctionnalités Bash. –
Trouvé aussi ce script par google. Ce n'est pas la solution parfaite. Atm j'utilise quelque chose comme echo $ mail | couper -d '@' .... fonctionne mais n'est pas parfait. Merci pour vos réponses. – fwaechter
Si vous déclarez explicitement bash sur le #! ligne, vous pouvez utilise les expressions rationnelles:
#!/bin/bash
if [[ $email =~ '(.+)@(.+)' ]] ; then
user=${BASH_REMATCH[1]}
host=${BASH_REMATCH[2]}
fi
Si vous êtes sérieux au sujet de la programmation avec bash, lisez la page de l'homme tout au long. Deux fois. Lisez également le Bash FAQ.
Valider le script.
La signification de ce script, est d'être sûr de tous les emails qui sont valides ou non avant de leur envoyer un email.
ce script vérifie une liste d'emails.
#!/bin/bash
#:
#: e-mail.verify.sh
#:
#: Date: 2011/14/12 13:14 PM IST
#: Author: Louay _at_ [email protected]
#: Discription: Verify (or) Validate the Hotmail Adresses.
#:
#:
#: First we create a Expect script to be sourced for us.
if [ ! $# == 1 ]
then
echo "Invalid Args $0 Filename"
exit 0
fi
#: Verifying the Hotmail adressess.
#: First verify the network Connections
C_R="\e[01;31m" ## Colors
C_B="\e[01;30m"
C_G="\e[01;32m"
C_END="\e[00m"
SMTPSERV=`host -t mx hotmail.com |grep 5 | grep mx2.hotmail.com |cut -d " " -f 7| sed 's/\.$//'`
ping -c2 $SMTPSERV >/dev/null
if [ "$?" -eq 0 ]
then
echo -e "Internet Connection" "\t\t\t\t\t\t$C_G[ OK ]$C_END"
echo -e "$SMTPSERV is AVAILABLE."
echo -n "Verifing"
for ((i=0; i<5; i++))
do
echo -n ".."
sleep 1
done
echo
else
echo -e "Internet Connection:" "\t\t\t\t\t\t$C_R[ FAIL ]$C_END" ""
echo -e "$SMTPSERV is Unavialable."
echo -e "Check your Network settings."
exit 0
fi
COUNT=0
RM_FILE="validemails.txt"
rm -f $RM_FILE
cat $1 | while read LINE; do
{
MAFR="MAIL FROM: <[email protected]>"
MATO="RCPT TO: <$LINE>"
#: ^variablies declared for not get escaped in the next cat command, where
#: we set the $MAFR in the expect script.
cat <<__EOF> e-veri
#!/bin/expect
#:
#: Date: 2011/14/12 01:14 PM
#: Author: Louay Mshelim_at_ [email protected]
#: Discription: Expect Script to Verify/Validate the Hotmail Adresses.
#:
set VMAFR "$MAFR"
set VMATO "$MATO"
spawn nc -C mx4.hotmail.com 25
expect "Sending"
send "HELO mx4.hotmail.com\r"
expect "OK"
send "\$VMAFR\r"
expect "OK"
send "\$VMATO\r"
expect "250"
send "quit\r"
expect eof
__EOF
#: Running the expect script and extracting the Results.txt
expect e-veri > Results.txt
grep 550 Results.txt >/dev/null
if [ "$?" -eq 0 ]
then
echo -e $LINE >> invalid.txt #invalid E-mails
else
echo -e "$LINE" >> validemails.txt
fi
}
done
echo -e "Valid E-mail have been saved to $C_R[ validemails.txt ]$C_END"
#: END
Ma toute suggestion pour ce dernier scénario, vérifier le travail avec plusieurs serveurs qui acceptent les chèques sans authentification, en utilisant nslookup qui sait:
Pour exemple de code dans: http://www.vivaolinux.com.br/script/Simples-Verificador-de-Email-Gmail
voir le code ci-dessous dans le site.
J'espère avoir contribué et j'espère collaborer aussi.
Merci.
Vous pouvez utiliser comme ça,
read emailId
if echo "${emailId}" | grep '^[a-zA-Z0-9]*@[a-zA-Z0-9]*\.[a-zA-Z0-9]*$' >/dev/null; then
echo Valid
else
echo Not Valid
fi
Que voulez-vous dire par « valider un e-mail »? – mouviciel
je veux juste valider une entrée par un autre script. plus cela, il vient quelque chose comme: « [email protected] » mais parfois juste venu « utilisateur » sans rien @ ... veulent faire le tri – fwaechter
double possible de [Email check expression régulière avec bash script] (http://stackoverflow.com/questions/2138701/email-check-regular-expression-with-bash-script) –