Просмотр полной версии : SpamTools для работы с базами (*NIX)
Написал скрипт на bash ))
Данный скрипт предназначен для работы с базами адресов электронной почты.
Он состоит из нескольких утилит: генерация баз, сортировка, "выдергивание" адресов из файлов, cклеивание баз, разделение баз, вставка контрольного адреса.
Для изменения консольного интерфейса на графический, раскомментируйте строку
#"DIALOG=Xdialog"
и закомментируйте строку
"DIALOG=dialog".
===========
Скачать скрипт можно с
http://slil.ru/24381785
===========
В процессе отладки и доводки, собрал базу адресов. Валидность не проверял. Но думаю, что больше 0% ))
В базе около 1 млн. адресов.
Скачать:
http://slil.ru/24381712
===========
Выслушаю пожелания о функциях. Хотелось бы узнать, стоит прикручивать wget + graber или нет. И как можно присобачить к этой ботве проверку на валид.
Чтоб не париться со 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
вечером попробую потестить.
Un_0
Если занимаешься написанием спам скриптов,то стукни мне,ася в подписи
_SploiT_
19.05.2007, 11:14
Не чего такой скриптик... +1 с меня
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot