muxsend - send a stream to a TCPMUX-like service
muxsend [-Oux] [-f file] [-p port] host services
This program is designed to send a stream of bytes to a simple data
collector. The collector is run on host under the tcpmux service,
either under inetd or under tcpmux(8), and is known as service.
As muxsend provides no in-band credential scheme, the service may
choose to recognize our client with getpeername(2), an RFC 1413 ident
request, or any other metric which is implemented wholly in-band by the
service. Any authorization action required by this client is beyond
the scope of this program.
For each service presented another level of encapsulation is performed.
This allows a mux service to run inside another. The default service
is the basename of our program name.
Each service must reply with a single line starting with a plus sign
(+) to acknowledge that the service is ready (as per RFC1078). The
"help" service is exempt from this requirement.
As an extension redirections are allowed in the same way as muxcat(1l).
See also tcpmux(8l).
The name of the file to pass to the service. When no file is
given muxsend defaults to stdin.
Print a brief help message.
Display any replies (after the initial service negotiation) to
stdout. This actually fork(2)'s a separate process to read
replies from the socket.
The TPC/IP port tcpmux (cum inetd) listens on for client connec-
tions (per RFC 1078 this should be port 1, our default). The
port may be provided as a service name from /etc/services.
Under -O set autoflush on stdout. This allows a perl(1) open2
co-process to synchronously push items in and out of many tcpmux
Show only the programs version information and exit.
Trace replies from the remote service on stderr.
since /var/log/oprules | muxsend log.my.domain.org opcollect
Send the list of op(1l) rules logged since the last collection
to the local log host under the opcollect service.
echo ksb | muxsend -O adm4 uid
Query the "uid" service on "adm4" for a match on "ksb". The
same thing may be accomplished with muxcat under -F, but this is
less of a hack.
muxsend -O svr6 inrr
Connect to the "inrr" service on svr6 to ask about DNS round-
robin records. Try "sso30.sac.fedex.com" or
"www100.sac.fedex.com" as input. Send an end-of-file to discon-
date | muxsend $NOTIFY ack-boot
Send the present time to the notify host on the ack-boot ser-
vice. This could be used to record a boot-event record for each
node that boots (or reboots) in a cluster. The receiver could
be as simple as a script that ran "cat >>/var/log/boot.txt", but
might call getpeername(2) to record which host sent the message.
muxsend -f /dev/null -O localhost help
The same output as "muxcat localhost help", but far less clear.
echo ksb | muxsend -Ox acct uid
Ask the accounting host for ksb's uid, and show the initial
negotiations on stderr.
Pete Fritchman, Kevin S Braunsdorf
petef at databits.net, tcpmux at ksb notAComma npcguild.org
sh(1), inetd(8), getpeername(2), muxcat(1l), recvmux(7l), since(1l),
tcpmux(8) or tcpmux(8l)