gpt4 book ai didi

javascript - Perl 脚本和 HTML 与 CGI 之间的接口(interface)

转载 作者:行者123 更新时间:2023-11-28 01:29:57 27 4
gpt4 key购买 nike

我是 Perl 和 HTML 新手。我用 Perl 编写了一个后端脚本,使用 send Expect 语句、for 循环和子例程。在 Perl 脚本中,我登录到服务器并发送一些命令并等待服务器提示,最后退出。现在我尝试使用 HTML 将其带到前端。我使用 CGI 作为框架来实现这一目标。这是我的部分代码

#!/usr/bin/perl

use Expect;
use Switch;
use warnings;
use 5.008;
use Data::Dumper;
use CGI;

my $q = CGI->new;

my %data;
$data = $q->param('server');
print $q->header;


if($data eq 'null')
{
print '<p> please select a server</p>';
exit;

}


###


$exp->spawn($command, @parameters)
or die "Cannot spawn $command: $!\n";

$exp->send("string\n");


$exp->expect($timeout, @match_patterns);


$exp->expect($timeout,
[ qr/regex1/ => sub { my $exp = shift;
$exp->send("response\n");
exp_continue; } ],
[ "regexp2" , \&callback, @cbparms ],
);


$exp->soft_close();

这些是我用来登录服务器和发送命令的发送期望命令的示例。但我在浏览器中看到他们如何登录。但我不希望这些在浏览器上看到,但它们仍然应该在后台执行

####

print "<html><head><title>Hello World</title></head>\n";
print "<body>\n";
print '<script>checked = false;function checkedAll () {if (checked == false){checked = true}else{checked = false}for (var i = 0; i < document.getElementById("sel").elements.length; i++) {document.getElementById("sel").elements[i].checked = checked;}}</script>';
print '<form action="robostats.pl " method="POST" id="sel">';
print '<input type="checkbox" onClick="checkedAll()">Select All<br />';

foreach my $i (@entire_success) {
print '<input type="checkbox" name="sel" value="';
print $i;
print '">';
print $i;
print '<br />';
}

print '<input type="submit" value="submit">';
print '</form>';
print "</body></html>\n";

所以当我尝试在浏览器中运行时,那些发送期望命令的服务器登录提示都会出现在浏览器上。我不希望它们出现在浏览器上(它们应该只出现在控制台中),我只想在数组中捕获其输出并在浏览器上显示表单的复选框。请帮助我如何实现这一目标。谢谢您

最佳答案

您可能需要在 Expect 脚本开始时关闭命令的日志记录/回显,如下所示:

$exp->log_user(0);

关于javascript - Perl 脚本和 HTML 与 CGI 之间的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22245873/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com