53 lines
1.5 KiB
Text
53 lines
1.5 KiB
Text
Date: Fri, 21 Sep 2001 14:50:29 -0400
|
|
From: "Jason M. Felice" <jfelice@cronosys.com>
|
|
To: bash-maintainers@gnu.org, chet@po.cwru.edu
|
|
Subject: Bash co-processes functions
|
|
Message-ID: <20010921145029.A6093@argo.eraserhead.net>
|
|
Mime-Version: 1.0
|
|
|
|
Attached to this message you will find coprocess.bash and coshell.bash.
|
|
Here's a brief synopsis of use:
|
|
|
|
coprocess open telnet localhost
|
|
while coprocess read il ; do
|
|
echo "$il"
|
|
case "$il" in
|
|
*ogin:*)
|
|
coprocess print 'user'
|
|
;;
|
|
*ord:*)
|
|
echo 'pass' |coprocess print --stdin
|
|
;;
|
|
*$ *)
|
|
coprocess print 'exit'
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
coprocess close
|
|
|
|
And here's an example of the coshell function:
|
|
|
|
coshell open ssh -l root otherbox
|
|
coshell eval hostname
|
|
coshell ls -l
|
|
if coshell test -d /tmp ; then echo 'otherbox has a /tmp!' ; fi
|
|
|
|
coshell sendfile /var/lib/upgrade.rpm /tmp/test.rpm || exit $?
|
|
coshell eval rpm -ivh /tmp/test.rpm || exit $?
|
|
coshell eval rm -f /tmp/test.rpm || exit $?
|
|
coshell close
|
|
exit 0
|
|
|
|
There are a few minor issues that I'd like to work out, but it works well
|
|
enough for me ;-) The issues are:
|
|
|
|
- Shell quoting issue with 'coshell eval' commands - need to somehow
|
|
re-quote words.
|
|
- Interactive commands hang 'coshell eval', tried redirecting in </dev/null
|
|
to executed command, but it caused strange shell exit problems.
|
|
- Some way to copy stdin from local coshell eval to remote shell. Probably
|
|
logically impossible, but would be wonderfully useful.
|
|
|
|
I'm using it for writing scripts to publish websites and other scripts to
|
|
co-located servers.
|