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
|
---|
7 |
|
---|
8 | Attached to this message you will find coprocess.bash and coshell.bash.
|
---|
9 | Here's a brief synopsis of use:
|
---|
10 |
|
---|
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
|
---|
28 |
|
---|
29 | And here's an example of the coshell function:
|
---|
30 |
|
---|
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
|
---|
35 |
|
---|
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
|
---|
41 |
|
---|
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:
|
---|
44 |
|
---|
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.
|
---|
51 |
|
---|
52 | I'm using it for writing scripts to publish websites and other scripts to
|
---|
53 | co-located servers.
|
---|