Как из строки выбрать e-mail-адресс??

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение zg » 2008-06-21 12:50:48

Код: Выделить всё

zg# echo "My email is zg@mail.ch!" | grep -Eo '[a-z]+@[a-z]+\.[a-z]+'
zg@mail.ch
zg#
только шаблон нужно усложнить, я просто пример привёл

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение risk94 » 2008-06-21 12:55:41

Чувак, ты реальна крут! +1
а как отправить ему письмо?

Код: Выделить всё

mail -s Test  $stroka | grep -Eo '[a-z]+@[a-z]+\.[a-z]+\.[a-z]+'      ??

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение zg » 2008-06-21 18:10:57

Код: Выделить всё

zg# echo "My email is zg@mail.ch!" | grep -Eo '[a-z]+@[a-z]+\.[a-z]+' | xargs -I % echo sendmail % "'It is some spam for %'"
sendmail zg@mail.ch 'It is some spam for zg@mail.ch'
zg#


zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение zg » 2008-06-30 11:18:08

risk94 писал(а):чего-то не уходит
sendmail zg@mail.ch 'It is some spam for zg@mail.ch'
работает отдельно?

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение risk94 » 2008-06-30 14:48:12

Работает вот так:

Код: Выделить всё

#!/bin/sh
cat ./full |                                                                                                                                                                   
{                                                                                                                                                                              
while read stroka                                                                                                                                                              
    do       
        echo $stroka | grep -Eo '[0-9,a-z]+@[a-z]+\.[a-z]+\.[a-z]+' | xargs -I % mail %
    done                                                                                                                                                                       
}
Но, тогда приходит только пустышка, ни темы не самой месаги. Куда добавить Тему и сам месадж?

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение zg » 2008-06-30 15:48:37

Код: Выделить всё

man mail

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение zg » 2008-06-30 15:59:21

немного оптимизировал )))

Код: Выделить всё

grep -Eio '[0-9a-z]+@[0-9a-z]+(\.[0-9a-z]+)+' ./full | xargs -I % mail % "It's spam"

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение risk94 » 2008-06-30 16:35:16

Код: Выделить всё

A message that you sent contained a recipient address that was incorrectly
constructed:

  It's spam  missing or malformed local part (expected word or "<")

The message has not been delivered to any recipients.

------ This is a copy of your message, including all the headers. ------


To: It's spam, root@ahou.local
Вот что возвращается.

Темы все равно нет. Если поможет mta - exim
Последний раз редактировалось risk94 2008-09-15 8:04:42, всего редактировалось 1 раз.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение ProFTP » 2008-06-30 16:50:38

тебе на только на bash?

я видел можно на perl!

Код: Выделить всё

if (!$email =~ /^[a-zA-Z_\\.-][a-zA-Z0-9_\\.-\\d]*\\@[a-zA-Z\\.-\\d]+\\.[a-zA-Z]{2,4}$/) ) {

print "не соответсвет";
{
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение risk94 » 2008-06-30 16:58:14

bash не годитсо. cshell

а можно полностью на перле, а то я не волоку нифига в нем

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение ProFTP » 2008-06-30 17:06:21

как отправить письмо из консоля (sendmail)?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение zg » 2008-06-30 17:13:31

zg писал(а):man mail
читал?

Код: Выделить всё

     -s subject
             Specify subject on command line.  (Only the first argument after
             the -s flag is used as a subject; be careful to quote subjects
             containing spaces.)
я так понимаю, что mail нельзя передать тело письма, тут нужно изголяться

Код: Выделить всё

#!/bin/sh
mymail()
{
  echo "test" | mail -s spam $1
}
grep -Eio '[0-9a-z]+@[0-9a-z]+(\.[0-9a-z]+)+' ./full | xargs -I % mymail %

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение risk94 » 2008-06-30 21:21:26

man mail - читал канешна, про сабжкт понял, но с телом письма не въехал

Заработало отак:

Код: Выделить всё

email_adress=`grep -Eio '[0-9a-z]+@[0-9a-z]+(\.[0-9a-z]+)+' ./full`

echo "Тело сообщения" | mail -s 'Тема сообщения' $email_adress

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение risk94 » 2008-06-30 21:55:11

исче вопрос, в той же строке где и email, есть дата(формат: 06.06.2008), как сделать проверку с текущей? точнее как ее выбрать из строки?

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение ProFTP » 2008-06-30 22:06:16

risk94 писал(а):исче вопрос, в той же строке где и email, есть дата(формат: 06.06.2008), как сделать проверку с текущей?

Код: Выделить всё

my $data0="06.06.2008";

 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
 $mon++;
 $year+=1900;
 if ($mday<10) { $mday="0$mday"; }
 if ($mon<10) { $mon="0$mon"; }
 if ($min<10) { $min="0$min"; }
 $date="$mday $mon $year";
 $time="$hour:$min:$sec";
 $cur_all_day=$mday+$mon*30+$year*365;

$curd=$mday.$mon.$yea;

if (! $data0 =~  $curd) {
print "erroe time";
}
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение risk94 » 2008-06-30 22:18:59

я так понял это непосредственно сравнение, а сама выборка даты из строки?

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение ProFTP » 2008-06-30 22:22:20

строку покажи, почему ты не хочешь гуглов воспользоваться?

написать: "выборка данных из строки perl"
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение risk94 » 2008-06-30 22:29:32

строка типа

Код: Выделить всё

vasya pupkin  192.168.0.1  vasya.p@mail.ru   06.06.2008 
роюсь я в нете, роюсь

Не серчайте плиз, учусь, тока пока пытаюсь осилить шелл для начала, а потом уж перл.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение ProFTP » 2008-06-30 22:36:35

risk94 писал(а):строка типа

Код: Выделить всё

vasya pupkin  192.168.0.1  vasya.p@mail.ru   06.06.2008 
роюсь я в нете, роюсь

Не серчайте плиз, учусь, тока пока пытаюсь осилить шелл для начала, а потом уж перл.
это файл и в нем все строки такого вида или разные?

ЗЫ можно открыть файл, разбить по словам (пробелы как запятые) и работать только с поледним словом...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение ProFTP » 2008-06-30 22:43:40

если разные строки, то нужно распарсить, посмотри тут про exim маленько

http://forum.lissyara.su/viewtopic.php?f=20&t=3577
http://forum.lissyara.su/viewtopic.php?f=20&t=8955
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение risk94 » 2008-06-30 23:04:00

Да, это файл. в нем все строки такого вида.
По поводу линков на паги про ексим - не уловил.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение ProFTP » 2008-06-30 23:34:05

risk94 писал(а):Да, это файл. в нем все строки такого вида.
По поводу линков на паги про ексим - не уловил.
по быстрячку не поулчаеться, vasya pupkin - это везде два слова может быть?
примерно так:

Код: Выделить всё

open(MAIL, "/var/log/maillog");
while ($line = <MAIL>)
{
  my ($month, $time,  $servicename, $id) = split /\s+/, $line, 7;
}

Код: Выделить всё

open (MYFILE, "2.txt") || die "awibka";
my (@sdata)=<MYFILE>;

foreach $str (@sdata) {
($razdel, $period, $bla, $bla)=split(/ /;, $str);

}
ты потом хочешь удалить те строки которые которые не совпали с датой?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Как из строки выбрать e-mail-адресс??

Непрочитанное сообщение risk94 » 2008-07-01 18:23:43

ProFTP писал(а):....
ты потом хочешь удалить те строки которые которые не совпали с датой?....
Не, если в строке есть дата, которая равна текущей, то мне нужно отправить письмо по имейлу, который тоже есть в этой строке