[kwlug-disc] using tee to pipe to multiple programs from /etc/valiases
Robert P. J. Day
rpjday at crashcourse.ca
Wed Apr 14 15:50:01 EDT 2010
On Wed, 14 Apr 2010, Khalid Baheyeldin wrote:
> On Wed, Apr 14, 2010 at 2:55 PM, Robert P. J. Day <rpjday at crashcourse.ca> wrote:
> so here's the deal -- i have a system where a /etc/valiases file is
> set up to pipe incoming input destined for all email addresses in a
> given domain to a single PHP script:
> /etc/valiases/<domain name>
> *: "| myphpscript.php"
> works great, no problem. *now* i want to have precisely the same
> incoming emails sent to *multiple* programs/scripts and, based on my
> testing with the "tee" command, i can do it thusly:
> $ <input generator> | tee >(pgm1) >(pgm2) ... >(pgmn) > /dev/null
> (that last redirection is to stop anything from going further on
> i've tested that incantation on the command line and it works fine.
> but when i try the same thing in the /etc/valiases/<domainname>
> it fails utterly. so i'm fairly confident i know how to use tee to
> this, i just don't know enough about valiases to know what kind of
> restrictions i have to work with. is what's in there executed in a
> restricted shell so that that tee variation won't work? thanks.
> I don't know much about valiases either ...
> But two possibilities:
> - valiases need the full path name to the executables.
> - valiases does not execute stuff with a normal sh/bash shell so the
> redirection syntax does not work?
that is the only possibility that seems to make sense so i snuck
around the problem by using a valiases entry of
*: "| .../dup_out.sh"
where my dup_out.sh script does all the actual work:
tee >(pgm1) >(pgm2) ... > /dev/null
where, obviously, all of pgm<n> are executables that read from stdin.
problem solved. and i can't imagine that the additional overhead from
executing that script is going to be noticeable.
Robert P. J. Day Waterloo, Ontario, CANADA
Linux Consulting, Training and Kernel Pedantry.
Web page: http://crashcourse.ca
More information about the kwlug-disc