Я новичок в Perl и HTML. Я написал сценарий back end в Perl, используя команды wait expect, для циклов и подпрограмм. В скрипте 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();
это примеры команд send expect, которые используются для входа на сервер и отправки команд. но я вижу их в браузере, как они будут входить в систему. но я не хочу, чтобы их видели в браузере, но они все равно должны выполняться в фоновом режиме
####
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);
$exp->log_file("$host.log");
log_user 0
в ожидаемом скрипте? Отключает регистрацию команд и результатов.