интерфейс между Perl-скриптом и HTML с CGI

1

Я новичок в 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";

поэтому, когда я пытаюсь запустить в браузере те команды отправки ожидающих, все запросы на вход в сервер поступают в браузер. Я не хочу, чтобы они были в браузере (они должны появляться только в консоли), я хочу только захватить его вывод в массиве и отобразить флажки формы в браузере. Пожалуйста, помогите мне, как это сделать. спасибо

  • 0
    Вы пробовали log_user 0 в ожидаемом скрипте? Отключает регистрацию команд и результатов.
  • 0
    Кстати, ваш сценарий изобилует инструкциями печати, вы можете рассмотреть возможность использования «здесь» документов для повышения ясности и производительности, например print << EOF <html> <head> ..... EOF
Показать ещё 11 комментариев
Теги:
cgi

1 ответ

1
Лучший ответ

Вероятно, вам нужно отключить ведение журнала/повторение команд в начале сценария Expect, например:

$exp->log_user(0);
  • 0
    Я хочу записать, что происходит, и сохранить его в файле. Это возможно здесь?
  • 0
    Попробуйте это $exp->log_file("$host.log");
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню