从Perl使用expect

kxxlusnw  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(183)

我遇到了一种情况,在中调用下面的Perl脚本

if (param("lremail") && param("lot")) {
    my $address=param("lremailaddress");
    my $lot=param("lot");
    print a({-href=>"$dir/new.pl"},"Back to Top"),br;
    print "Request submitted for $address.",br;
    print "Lot $lot",br;
    print "You will receive an e-mail with a link to the data when the request is complete.";
    print end_html;
    system ("ssh SERVERNAME /test/abc.csh $lot $$ $address &");
    exit(1);

上面的脚本没有运行,因为当我执行时,系统提示输入密码。然后我查找它,发现下面的命令。

> expect -c 'spawn ssh SERVERNAME /test/abc.csh J213520 06 abc@gmail.com "ls -lh file"; expect "Password:"; send "PASSWORD\r"; interact'

上面的命令成功执行,没有任何问题,但仅从命令行执行。当我将相同的命令(通过替换system调用)合并到Perl脚本中时,它失败了。我如何将其合并到第一个脚本中?

f0brbegy

f0brbegy1#

有一个用于Perl的Expect模块。
然而,我倾向于直接编写expect脚本并从Perl调用它们。这样我就可以自己使用expect脚本了。但是,我过去也做过很多Tcl。

相关问题