Patch-ID: bash41-003
[bash.git] / examples / functions / coshell.README
blob9675cda67f2dd904a3a44da5661a19907e54688c
1 Date: Fri, 21 Sep 2001 14:50:29 -0400
2 From: "Jason M. Felice" <jfelice@cronosys.com>
3 To: bash-maintainers@gnu.org, chet@po.cwru.edu
4 Subject: Bash co-processes functions
5 Message-ID: <20010921145029.A6093@argo.eraserhead.net>
6 Mime-Version: 1.0
8 Attached to this message you will find coprocess.bash and coshell.bash.
9 Here's a brief synopsis of use:
11 coprocess open telnet localhost
12 while coprocess read il ; do
13   echo "$il"
14   case "$il" in
15     *ogin:*)
16       coprocess print 'user'
17       ;;
18     *ord:*)
19       echo 'pass' |coprocess print --stdin
20       ;;
21     *$ *)
22       coprocess print 'exit'
23       break
24       ;;
25   esac
26 done
27 coprocess close
29 And here's an example of the coshell function:
31 coshell open ssh -l root otherbox
32 coshell eval hostname
33 coshell ls -l
34 if coshell test -d /tmp ; then echo 'otherbox has a /tmp!' ; fi
36 coshell sendfile /var/lib/upgrade.rpm /tmp/test.rpm || exit $?
37 coshell eval rpm -ivh /tmp/test.rpm || exit $?
38 coshell eval rm -f /tmp/test.rpm || exit $?
39 coshell close
40 exit 0
42 There are a few minor issues that I'd like to work out, but it works well
43 enough for me ;-)  The issues are:
45 - Shell quoting issue with 'coshell eval' commands - need to somehow
46   re-quote words.
47 - Interactive commands hang 'coshell eval', tried redirecting in </dev/null
48   to executed command, but it caused strange shell exit problems.
49 - Some way to copy stdin from local coshell eval to remote shell.  Probably
50   logically impossible, but would be wonderfully useful.
52 I'm using it for writing scripts to publish websites and other scripts to
53 co-located servers.