PDA

Просмотр полной версии : SpamTools для работы с базами (*NIX)


Un_0
17.05.2007, 17:58
Написал скрипт на 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 с меня