从Perl使用expect

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

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

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

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

  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。

相关问题