2009-10-06 4 views
0

쉘 스크립트로 이메일의 유효성 검사를 시도합니다. 메일의 유효성을 검사하는 간단한 예가 있습니까? 구글 물었지만, 그냥 쓰레기와 PHP (또한 쓰레기 .. 발견).배시로 이메일 확인

감사합니다.

+2

당신이 "이메일을 확인"무엇을 의미합니까? – mouviciel

+0

은 다른 스크립트로 일부 입력의 유효성을 검사하기 만하면됩니다. 이 대부분이 온다 같은 : "[email protected]" 하지만 때로는 온 "사용자"아무것도없이 @ ... [이메일 체크 정규식의 – fwaechter

+1

가능한 중복 그들을 밖으로 정렬하려면 bash 스크립트] (http://stackoverflow.com/questions/2138701/email-check-regular-expression-with-bash-script) –

답변

0

이런 뜻입니까?

#!/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 

에서 찾을 : Fun things in Life - Simple Bash Email Validator

+0

이것은 SMTP를 제대로 말하기위한 대체품이 아닙니다. (HELO를 기다리고 멀티 라인 응답 등). 어딘가에 웹상에 뭔가있는 것이 유용하다는 것을 의미하지는 않습니다. – ShiDoiSi

+0

또한 Bourne 쉘과 호환되는 스타일로 작성되었으며 Bash 기능을 이용하지 않습니다. –

+0

google도이 스크립트를 찾았습니다. 완벽한 해결책이 아닙니까? Atm 나는 echo $ mail | cut -d '@'.... 작동하지만 완벽하지는 않습니다. 답장을 보내 주셔서 감사합니다. – fwaechter

1

명시 적으로 #에 떠들썩한 파티를 명시하는 경우! 라인을 사용하면 정규식을 사용할 수 있습니다 :

bash로 프로그래밍하는 것이 중요하다면 맨 페이지를 끝까지 읽으십시오. 두번. Bash FAQ도 읽으십시오.

1

스크립트 유효성 검사

이 스크립트의 의미는 이메일을 보내기 전에 유효한지 또는 그렇지 않은지 확인하는 것입니다.

이 스크립트는 이메일 목록을 확인합니다. http://www.vivaolinux.com.br/script/Simples-Verificador-de-Email-Gmail

아래 코드를 참조하십시오에서 예제 코드를 들어

:

#!/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 
0

후자의 스크립트에 대한 나의 어떤 제안이 알고 nslookup을을 사용하여 인증없이 검사를 받아 여러 서버로 작업을 확인 사이트에서.

나는 기여한 것으로 알고 공동 작업하기를 희망합니다.

감사합니다.

0
당신은 다음과 같이 사용할 수 있습니다

,

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