|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Vladislav Breus 2:5020/400 15 Jan 2001 14:09:55 To : All Subject : STDIN, STDOUT...куда деваются данные ? -------------------------------------------------------------------------------- День добрый! Может, поможет кто-нибудь... задача следующая: приходит на почтовый адрес письмо с PGP-armored аттачем, скрипт сам его разкриптовывает (утилиткой) и отдает на другой адрес. т.е. в HOME юзера test в .forward прописано: "|/home/test/pgp.pl|/home/pgp1.pl" вот эти файлы : //============================================================================== ================= file pgp.pl: #!/usr/bin/perl open(IN,"-") || die "can't open stdin !"; @list = <IN>; $size = @list; $f = 0; open(OUT,">-") || die "can't open stdout !"; select OUT; $| = 1; # отключаем буфферизацию print for($i=0;$i<$size;$i++){ if( @list[$i]=~/-----BEGIN PGP MESSAGE-----/ ){ $f = 1; print OUT "YES\n"; open(PGP,"|./pgpv -f -z 87654321") || die "Can't open pgpv !"; # # запуск PGP-утилитки. Параметры стоят так, что принял на STDIN поток и отдал # на STDOUT результат. ничего больше. } if($f==0){ printf OUT @list[$i]; } else{ print PGP @list[$i]; } if( @list[$i]=~/-----END PGP MESSAGE-----/ ){ close(PGP); $f = 0; } } close(IN); close(OUT); //============================================================================== ================= file pgp1.pl #!/usr/bin/perl open(OUT,"|/usr/bin/procmail"); open(OUT1,">/home/test/out"); open(IN,"-") || die "can't open stdin !"; while(<IN>){ print OUT "$_"; print OUT1 "$_"; } close(IN); close(OUT); если я запускаю %./pgp.pl < hello.asc | pgp1.pl где hello.asc pgp encrypted (ASCII) файл, то в "логе" файле /home/test/out вижу то, что нужно (т.е. работает). если я пишу письмо на этот форвард, то теряется PGP-кусок, и в мыле (которое мне возвращается через procmail) и в логе. (т.е. куска нет уже на стадии pgp1.pl !!) причем слово YES, я вижу всегда, то есть сам PGP-кусок есть, не теряется... Заранее ОЧЕHЬ благодарен. P.S. извиняюсь за непрофессиональный perl. :) -- Vladislav Breus, SysAdmin ICQ#43644692 --- ifmail v.2.15dev5 * Origin: DTRADE (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/9008704f8e9e.html, оценка из 5, голосов 10
|