如果用Expect发多行命令

如果用Expect发多行命令

我想在perl程序中通过Expect模块,向交换机发多行命令,大概几百行吧,不知如何实现,以前只是发几行命令,现在命令多了,不知如何解决?
将待发命令单独存放一文件, 然后读一条发一条. 这样很容易修改命令.
难道发一行命令$comm就要调用exp一次?

QUOTE:
$exp->expect(60,
           [qr/Username:/=>sub { my $exp = shift;
                $exp->expect("Username:");
                $exp->send("sys\n");
                $exp->expect("Password:");
                $exp->send("********");
                $exp->expect(">");
                $exp->send("$comm\n");
                $exp->expect(">");
                $exp->send("quit\n");
                $exp_continue;} ],
        );
        $exp->soft_close();



QUOTE:
原帖由 屠龙 于 2007-12-15 19:42 发表
难道发一行命令$comm就要调用exp一次?


通常来说是的, 这样便于确定何时发送下次的命令.
不exp就自己掐时间, 不过为什么不exp呢?

可是这样一来,每执行一行,就得登录一次,岂不是很慢?
为什么 "每执行一次就要登陆一次" 呢?
expawn一个shell, 然后一直循环发送命令不就行了.
顺便问句, 你了解Expect大致流程吗?
不太了解,你给出具体实现的代码吗?谢谢!
你不是写了
[qr/Username:/=>sub { my $exp = shift;
                $exp->expect("Username:");
                $exp->send("sys\n");
                $exp->expect("Password:");
                $exp->send("********");
                $exp->expect(">");
                $exp->send("$comm\n");
                $exp->expect(">");
                $exp->send("quit\n");
                $exp_continue;} ],
吗? 为什么要放这么多命令在Username里面呢?
像这样:
[qr/username:/i => ...],   # 这里最好用send_slow
[qr/password:/i => ...],   # 同上
[这里匹配命令提示符PS1 => 发送一条命令, 命令来自单独的文件]
大致如上, 框架还是蛮简单的.
总之操纵和数据分离, 日后维护和重用都很方便.

你要我的代码的话, 下周贴出来.
期待中……