mars_unique
@mars_unique
#!/bin/sh

Как подменить слово «на лету» слушая сокет, и тут же отправляя через sendmail?

Скрипт на perl слушает сокет, получает текстовую информацию, с определенной переодичностью, и тут-же полученое отправляет через sendmail на определенную групу адресеов. Вопрос состоит в том как перет отправкой через sendmail отредактировать содержимое будующего письма на лету и собственно уже отправить новый вариант?
Прилагаю скрипт
#!/usr/bin/perl -w
    use strict;
    use IO::Socket;

    my($server, $newmsg, $max_len, $server_port, $cmd_mail, $to_email, $subject,);
    $max_len = 900;
    $server_port = 50001;
    $cmd_mail = "/usr/sbin/sendmail -t";
    $to_email = "user\@mail";
    $subject = "State warn!";

    $server = IO::Socket::INET->new(LocalPort=>$server_port, Broadcast=>0, Proto=>"udp")
    or die "Error starting UDP Server on port $server_port: $@\n";
    print "UDP Server started on port $server_port\n";
    $newmsg = "";
    while($server->recv($newmsg,$max_len)){
    if($newmsg){
    my($port, $ipaddr) = sockaddr_in($server->peername);
    $ipaddr = 127.0.0.1;
    print "Received: $newmsg \n";
    open (SENDMAIL, "|$cmd_mail") || die "ERROR: Can not run sendmail";
    print SENDMAIL "MIME-Version: 1.0\n";
    print SENDMAIL "Content-Type: text/plain; charset=\"utf8\"\n";
    print SENDMAIL "Content-Transfer-Encoding: 8bit\n";
    print SENDMAIL "To: $to_email\n";
    print SENDMAIL "Subject: $subject\n\n";
    print SENDMAIL $newmsg . "\n";
close (SENDMAIL)
    }
    }

    die "recv: $!";
  • Вопрос задан
  • 2587 просмотров
Решения вопроса 1
mars_unique
@mars_unique Автор вопроса
#!/bin/sh
Не в ту сторону рыл, как упертый баран, спасибо разобрался.
$newmsg =~ s/Old/New/g;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Так, собственно говоря, правьте $newmsg перед выводом как вам надо, и всё.
Если же хотите, чтобы всё сделали за вас, то идите на фрилансим.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы