我遇到了一种情况,在中调用下面的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脚本中时,它失败了。我如何将其合并到第一个脚本中?
1条答案
按热度按时间f0brbegy1#
有一个用于Perl的Expect模块。
然而,我倾向于直接编写expect脚本并从Perl调用它们。这样我就可以自己使用expect脚本了。但是,我过去也做过很多Tcl。