是否可以从bash中调用的其他期望脚本访问期望生成的进程

时间:2014-02-20 08:47:06

标签: bash session process telnet expect

我有一个期望脚本,可以打开telnet会话并执行授权。执行授权后,我希望能够从bash调用其他期望脚本,在同一会话中执行各种操作。

有可能吗?

2 个答案:

答案 0 :(得分:0)

不完全得到你想要的东西,因为如果你提供一些代码或脚本然后击球,但无论如何我只有打开telnet会话,这是你想要的第一部分,现在让我知道下一部分,所以通过脚本,所以我可以根据需要修改我的脚本。

#!/bin/bash

testUserAction()
{
     expect<<EOF

     set timeout 200

     spawn telnet $1

     expect "login:"
     send "testuser\r"
     expect "Password"
     send "12345678\r"
      ;;;;;;;;;;;;;#rest of expect which you want

    EOF

}

testUserAction 171.172.12.1

答案 1 :(得分:0)

可以参见以下示例:

#!/usr/local/bin/expect

set user "user"
set host "host"
set pass "password"

spawn telnet $host

set timeout 10
expect {
    timeout {
        puts "Unable to connect to $host"
        exit 1
    }

    "login: " {
        send -- "$user\r"
        exp_continue
    }

    "assword: " {
        send -- "$pass\r"
    }
}

#Call the other expect script on host
send -- "./test.exp $user\r"
expect {
    "($user)" {
        puts "OK got it!"
    }
}

然后是test.exp脚本,该脚本应位于主机上的用户主目录

#!/usr/local/bin/expect

set name [lindex $argv 0]

puts "Welcome ($name)"