Install `expect': apt-get install expect A sample test for `ftp': --[i]ftp.exp[/i]-- [code] spawn ftp expect "ftp> " send "open ftp.gnu.org\r" while 1 { expect { "Name *:" {send "anonymous\r"} "Password:" {send "name@example.org\r"} "*ftp> " break timeout exit } } send "binary\r" expect "*ftp> " send "hash\r" expect "*ftp> " interact [/code] ---- A better sample test for `bc': --[i]bc.exp[/i]-- [code] spawn bc sleep 1 proc pass {a} {puts "PASS $a"} proc fail {a} {puts "FAIL $a"} proc bc_test {expr result} { send "$exp\r\n" expect "$expr\r\n" expect { -gl "$result\r\n" {pass "$expr"} "*\r\n' {fail "$expr"} timeout {fail "(timeout) $expr"} } } bc_test "2+2" "4" bc_test "7*9" "63" [/code] ---- Install `dejagnu': apt-get install dejagnu A sample test for `bc': --[i]config/default.exp[/i]-- [code] proc bc_load {arg} { } proc bc_start {} { global spawn_id spawn bc sleep 1 } proc bc_exit {} { send "quit\n" } proc bc_version {} { return "unknown" } proc bc_test {expr result} { send "$expr\n" expect "$expr\r\n" expect { -gl "$result\r\n" {pass "$expr"} "*\r\n' {fail "$expr"} timeout {fail "(timeout) $expr"} } } [/code] ---- --[i]bc.test/expr.exp[/i]-- [code] bc_test "2+2" "4" bc_test "7*9" "63" ... [/code] ---- run tests with: runtest --all --tool bc (from: Open-Source-Programmierwerkzeuge von Andreas Zeller und Jens Krinke)