2014年5月21日 星期三

expect in apache

試expect in PHP一直失敗,只好回頭試expect in apache。不多說,直接看範例吧。

PHP內容如下,就直接呼叫expect,然後丟變數給他而已。
        $command = "/home/www/OM/cgi-bin/test.exp 139.175.240.1 RIPO \"password\" local \"sh ver\"";
        echo $command."
";
        $out = shell_exec($command);
        print_r($out);
?>

test.exp的內容,簡單講一下。在apache裡不能跑shell,所以要用spawn telnet $ne,讓它執行。
由於已經spawn telnet了,所以後面的telnet 就不用跑。

#!/usr/bin/expect -f
set timeout 300
set ne [lindex $argv 0]
set user [lindex $argv 1]
set pass [lindex $argv 2]
set vrf [lindex $argv 3]
set cmd [lindex $argv 4]
log_file -a session_$ne.log

set timeout 10
spawn telnet $ne
expect "login: "
send -- "$user\r"
expect "password:"
send -- "$pass\r"
expect "#"
send -- "ter len 0\r"
expect "#"
send -- "context $vrf\r"
expect "#"
send -- "$cmd\r"
expect "#"
send -- "exit\r"
send -- "exit\r"

沒有留言:

張貼留言