Хорошо, ребята, я знаю, что это довольно редкий случай, но я действительно был бы признателен за ваши мудрые комментарии по этому поводу.
Я разрабатываю веб-интерфейс для мониторинга / работы с использованием CGI (Perl / SSH) для мониторинга более 20 серверов. Большая часть работы выполнена, я подготовил сценарии оболочки, и мы автоматизируем большую часть материала там. В любом случае, нас убеждают предоставить интерфейс для того, что мы сделали для мониторинга и автоматизации.
Короче говоря, я использую один из серверов в качестве основного шлюза для запуска CGI.
Каков мой план, на этом сервере я использую Perl CGI для запуска сценариев оболочки, используя, например, функцию qx () и помещаю вывод в файл. сценарий оболочки подключится к другим серверам и запустит команду. проблема в том, что когда я запускаю сценарий cgi или shell в SSH, он работает нормально и печатает вывод, но когда я вызываю cgi через web, он возвращает только до тех пор, пока не будет выведен вывод оболочки сервера CGI (тот, к которому я подключаюсь, отсутствует в то время как с SSH он работает нормально).
вот код CGI:
<code>#!/usr/bin/perl -w
use strict;
use CGI;
use Shell;
my $query = new CGI;
print $query->header(-charset=>'utf-8');
my $value=qx(sh dspace91.sh > space.txt);
open(FILE, '<space.txt') or die "Can't read file [$!]\n";
while (<FILE>){
$document = $document . $_;
}
close FILE;
my $gdate=qx(date);
print "<div id='black' style='color:white'><pre>$document
Информация, сгенерированная в
$ gdate ";
и вот код сценария оболочки (файл dspace91.sh)
#!/bin/bash
expect -c 'spawn ssh -q username@serverIP "df -h"; expect password ; send "password\n" ; interact; ';
exit;
Я предполагаю, что проблема заключается в работе с переменными среды ввода / вывода. что-то делать с STDOUT. хотя не уверен!
это вывод при запуске CGI через SSH:
spawn ssh -q username@serverIP df -h
username@serverIP's password:
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 20G 7.1G 12G 39% /
/dev/sda7 90G 25G 61G 29% /iwa
/dev/sda6 4.9G 1.3G 3.4G 28% /oracle
/dev/sda3 10G 595M 8.9G 7% /var
/dev/sda1 99M 45M 49M 48% /boot
tmpfs 16G 0 16G 0% /dev/shm
drst002:/logs 400G 274G 127G 69% /backup-logs
drst002:/unix 7.0T 5.2T 1.9T 74% /unix
это вывод при запуске через веб-интерфейс:
spawn ssh -q username@serverIP df -h
username@serverIP's password:
Information generated on Tue Apr 3 02:21:47 IRDT 2012
Любые люди идеи?