bash expect: script to handle command line prompts

expect is very useful to automate login process. I thought it is helpful when doing testing as well. A simple login script might work like this:

#!/usr/bin/env expect
eval spawn "/path/program"
expect "^Enter Auth Username:"
send "user\n"
expect "Enter Auth Password:"
send "password\n" 

To install expect, “yum install expect”

bash: passing output from one program to another

sometimes you want to be able to pass output from one program to another, say from bash to php. There is a neat trick to do it. In php, we execute the bash script restartapache.

<?php 
$command="/usr/local/bin/restartapache {$_GET['server']}"; 
exec($command, $output); foreach ($output as $v) 
{ echo "$v <br/>"; } 
?>

then in the bash, we write the output to a file. cat the file, then remove it.

#!/bin/bash
#
# $Id$
# restart apache in a server
# bernard - 29 Jan 2009
#

name=`basename $0`
if [ $# != 1 ]
 then
  cat <&1 /tmp/$$
cat /tmp/$$
rm /tmp/$$
exit 0;