Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   E-Mail (https://forum.antichat.xyz/forumdisplay.php?f=14)
-   -   SpamTools для работы с базами (*NIX) (https://forum.antichat.xyz/showthread.php?t=40227)

Un_0 17.05.2007 17:58

SpamTools для работы с базами (*NIX)
 
Написал скрипт на bash ))

Данный скрипт предназначен для работы с базами адресов электронной почты.
Он состоит из нескольких утилит: генерация баз, сортировка, "выдергивание" адресов из файлов, cклеивание баз, разделение баз, вставка контрольного адреса.

Для изменения консольного интерфейса на графический, раскомментируйте строку

#"DIALOG=Xdialog"

и закомментируйте строку

"DIALOG=dialog".

===========

Скачать скрипт можно с

http://slil.ru/24381785

===========

В процессе отладки и доводки, собрал базу адресов. Валидность не проверял. Но думаю, что больше 0% ))

В базе около 1 млн. адресов.

Скачать:

http://slil.ru/24381712

===========

Выслушаю пожелания о функциях. Хотелось бы узнать, стоит прикручивать wget + graber или нет. И как можно присобачить к этой ботве проверку на валид.

Un_0 17.05.2007 21:04

Чтоб не париться со slil.ru (то качает, то не качает), выкладываю здесь.

Код:

#!/bin/sh
# Copyright (C) 2007 Un_0 <Un_0@mail.ru>
#
#===========================================================================================================
#DIALOG=Xdialog
DIALOG=dialog
#===========================================================================================================

TITLE="SpamTools"
MENU=""Select" 0 60 0 "1" "Graber" "2" "Sort" "3" "Generator" "4" "Join" "5" "Include" "6" "Split""

#
#===========================================================================================================
#

error()
{
    echo "$1"
    exit 2
}
help()
{
  cat <<HELP
        ###################################################################################
        # Данный  скрипт  предназначен  для работы с базами  адресов электронной  почты. #
        # Он  состоит из нескольких  утилит: генерация  баз, сортировка,  "выдергивание" #
        # адресов из файлов, cклеивание баз, разделение баз, вставка контрольного адреса. #
        #                                                                                  #
        # Для изменения  консольного  интерфейса на графический,  раскомментируйте строку #
        # "DIALOG=Xdialog" и закомментируйте строку "DIALOG=dialog".                      #
        ###################################################################################
HELP
  exit 0
}

#
#===========================================================================================================
#
#опции командной строки

while [ -n "$1" ]; do
case $1 in
    -h) help;shift 1;;
    --help) help;shift 1;;
    --) shift;break;;
    -*) echo "error: no such option $1. -h for help";exit 1;;
    *)  break;;
esac
done

#
#===========================================================================================================
#
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title $TITLE --menu $MENU 2> /tmp/sel.$$
    rval=$?
    clear
    if [ "$rval" = "0" ]; then

sel=`cat /tmp/sel.$$`
rm -f /tmp/sel.$$

#
#===========================================================================================================
#

if [ "$sel" = "1" ]; then

$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Graber" \
        --inputbox "File (/base.txt):" 0 0 2> /tmp/inputbox.tmp.$$

retval=$?

if [ "$retval" = "0" ]; then
       
$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Graber" \
        --inputbox "Output (/mails.txt):" 0 0 2> /tmp/outbox.tmp.$$
       
retval=$?

if [ "$retval" = "0" ]; then

output=`cat /tmp/outbox.tmp.$$`
rm -f /tmp/outbox.tmp.$$

input=`cat /tmp/inputbox.tmp.$$`
rm -f /tmp/inputbox.tmp.$$

    grep -E -o -h '[-._a-zA-Z0-9]+@[-_.a-zA-Z0-9]+\.[a-zA-Z]{2,4}' $input  | sort | uniq | tr A-Z a-z >>$output

    { n=`grep -i . $output | wc -l`; $DIALOG --backtitle "SpamTools by Un_0 v0.3" --msgbox "Found $n mails" 5 28 ; }

rm -f /tmp/num.$$

fi
fi

#===========================================================================================================

else if [ "$sel" = "2" ]; then

$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Sort" \
        --inputbox "Input (mails.txt):" 0 0 2> /tmp/inputbox.tmp.$$
       
retval=$?

if [ "$retval" = "0" ]; then
       
$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Sort" \
        --inputbox "Output (/sort.txt):" 0 0 2> /tmp/outbox.tmp.$$
       
retval=$?

if [ "$retval" = "0" ]; then

output=`cat /tmp/outbox.tmp.$$`
rm -f /tmp/outbox.tmp.$$

input=`cat /tmp/inputbox.tmp.$$`
rm -f /tmp/inputbox.tmp.$$

    cat $input | sort | uniq | tr A-Z a-z >>$output
   
    { n=`grep -i . $output | wc -l`; $DIALOG --backtitle "SpamTools by Un_0 v0.3" --msgbox "Parsed $n lines" 5 28 ; }

fi
fi

#===========================================================================================================

else if [ "$sel" = "3" ]; then

$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Generator" \
        --inputbox "Input (/names.txt):" 0 0 2> /tmp/inputbox.tmp.$$
       
retval=$?

if [ "$retval" = "0" ]; then
       
$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Generator" \
        --inputbox "Domain (mail.ru):" 0 0 2> /tmp/domain.tmp.$$
       
retval=$?

if [ "$retval" = "0" ]; then
       
$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Generator" \
        --inputbox "Output (/Gen.txt):" 0 0 2> /tmp/outbox.tmp.$$
       
retval=$?

if [ "$retval" = "0" ]; then

domain=`cat /tmp/domain.tmp.$$`
rm -f /tmp/domain.tmp.$$

input=`cat /tmp/inputbox.tmp.$$`
rm -f /tmp/inputbox.tmp.$$

output=`cat /tmp/outbox.tmp.$$`
rm -f /tmp/outbox.tmp.$$

        while read -r xx yy
                do
                        printf "%s%s\n" "$yy" "$xx"@$domain >> $output
                done < $input
       
        { n=`grep -i . $output | wc -l`; $DIALOG --backtitle "SpamTools by Un_0 v0.3" --msgbox "Create $n mails" 5 28 ; }

fi
fi
fi

#===========================================================================================================

else if [ "$sel" = "4" ]; then

$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Join" \
        --inputbox "Input files (/*.txt):" 0 0 2> /tmp/inputbox.tmp.$$
       
retval=$?

if [ "$retval" = "0" ]; then
       
$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Join" \
        --inputbox "Output (/mails.txt):" 0 0 2> /tmp/outbox.tmp.$$
       
retval=$?

if [ "$retval" = "0" ]; then

output=`cat /tmp/outbox.tmp.$$`
rm -f /tmp/outbox.tmp.$$

input=`cat /tmp/inputbox.tmp.$$`
rm -f /tmp/inputbox.tmp.$$

    less $input | sort | tr A-Z a-z | uniq >> $output
   
    { n=`grep -i . $output | wc -l`; $DIALOG --backtitle "SpamTools by Un_0 v0.3" --msgbox "Found $n lines" 5 28 ; }

fi
fi

#===========================================================================================================

else if [ "$sel" = "5" ]; then

$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Include" \
        --inputbox "Input (/mails.txt):" 0 0 2> /tmp/inputbox.tmp.$$

retval=$?

if [ "$retval" = "0" ]; then
       
$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Include" \
        --inputbox "Mail (Un_0@mail.ru):" 0 0 2> /tmp/mail.tmp.$$
       
retval=$?

if [ "$retval" = "0" ]; then
       
$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Include" \
        --inputbox "Lines (10000):" 0 0 2> /tmp/spin.tmp.$$
       
retval=$?

if [ "$retval" = "0" ]; then
       
$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Include" \
        --inputbox "Output (/include.txt):" 0 0 2> /tmp/outbox.tmp.$$

mail=`cat /tmp/mail.tmp.$$`
rm -f /tmp/mail.tmp.$$

input=`cat /tmp/inputbox.tmp.$$`
rm -f /tmp/inputbox.tmp.$$

output=`cat /tmp/outbox.tmp.$$`
rm -f /tmp/outbox.tmp.$$

spin=`cat /tmp/spin.tmp.$$`
rm -f /tmp/spin.tmp.$$

n=0
q=0

while read -r xx yy
                do
                        printf "%s%s\n" "$yy" "$xx" >> $output
                        n=`expr $n + 1`
                                if [ "$n" = "$spin" ]; then
                                        echo $mail >> $output
                                        n=0
                                        q=`expr $q + 1`
                                fi
                done < $input
               
        { $DIALOG --backtitle "SpamTools by Un_0 v0.3" --msgbox "Include $q mails" 5 28 ; }

fi
fi
fi

#===========================================================================================================
               
else if [ "$sel" = "6" ]; then

$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Split" \
        --inputbox "Input (/mails.txt):" 0 0 2> /tmp/inputbox.tmp.$$
       
retval=$?

if [ "$retval" = "0" ]; then
       
$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Split" \
        --inputbox "Lines (10000):" 0 0 2> /tmp/spin.tmp.$$
       
retval=$?

if [ "$retval" = "0" ]; then
       
$DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Split" \
        --inputbox "Output dir (/home/):" 0 0 2> /tmp/outbox.tmp.$$
       
retval=$?

if [ "$retval" = "0" ]; then

input=`cat /tmp/inputbox.tmp.$$`
rm -f /tmp/inputbox.tmp.$$

output=`cat /tmp/outbox.tmp.$$`
rm -f /tmp/outbox.tmp.$$

spin=`cat /tmp/spin.tmp.$$`
rm -f /tmp/spin.tmp.$$

n=0
k=1

while read -r xx yy
                do
                        printf "%s%s\n" "$yy" "$xx"@$domain >> "$output""split_"$k
                        n=`expr $n + 1`
                                if [ "$n" = "$spin" ]; then
                                        k=`expr $k + 1`
                                        n=0
                                fi
                done < $input
               
        { k=`expr $k - 1` ; $DIALOG --backtitle "SpamTools by Un_0 v0.3" --msgbox "Create $k files" 5 28 ; }
       
fi
fi
fi
fi

#===========================================================================================================

fi
fi
fi
fi
fi
fi

#===========================================================================================================

clear

#===========================================================================================================


bezpaniki 18.05.2007 11:38

вечером попробую потестить.

parik 19.05.2007 11:09

Un_0
Если занимаешься написанием спам скриптов,то стукни мне,ася в подписи

_SploiT_ 19.05.2007 11:14

Не чего такой скриптик... +1 с меня


Время: 05:38