알았어요,이 사람은 꽤 드문 경우지만 저는 이것에 대한 귀하의 현명한 의견에 진심으로 감사 할 것입니다.쉘 스크립트 (다른 서버에서 쉘/명령을 실행하는 쉘 스크립트)를 실행하는 CGI는 출력을 반환하지 않습니다.
저는 20 명 이상의 서버를 모니터링하기 위해 CGI (Perl/SSH)를 사용하여 모니터링/운영 웹 GUI를 개발 중입니다. 대부분의 작업이 끝났습니다. 쉘 스크립트를 준비했고 거기에서 대부분의 작업을 자동화하고 있습니다. 어쨌든 우리는 우리가 수행 한 모니터링 및 자동화 작업을위한 프론트 엔드를 제공하도록 설득되었습니다.
짧게 요약하면 CGI를 실행하기 위해 서버 중 하나를 기본 게이트웨이로 사용하고 있습니다. 내 계획은 무엇입니까,이 서버에서 Perl CGI를 사용하여 예를 들어 qx() 함수를 사용하여 쉘 스크립트를 실행하고 결과를 파일에 저장합니다. 쉘 스크립트는 다른 서버에 연결하여 명령을 실행합니다. 문제는 내가 SSI에서 cgi 또는 쉘 스크립트를 실행하는 동안 잘 작동하고 출력을 출력하지만 웹을 통해 CGI를 호출 할 때 CGI 서버의 쉘 출력까지만 반환됩니다 (연결된 Im이없는 경우) SSH는 잘 작동합니다). 여기
는 CGI 코드 :#!/bin/bash
expect -c 'spawn ssh -q [email protected] "df -h"; expect password ; send "password\n" ; interact; ';
exit;
가 내가 생각하는 것은 문제가 I와 협력하고있다 (dspace91.sh 파일)
#!/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</pre>Information generated on <font color='#00CC00'>$gdate</font></div>";
여기 쉘 스크립트 코드를입니다/O 환경 변수. STDOUT과 관련이 있습니다. 확실하지 않은!
이 내가 SSH를 통해 CGI를 실행할 때 출력 :
spawn ssh -q [email protected] df -h
[email protected]'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
나는 웹 GUI를 통해 실행할 때이 출력입니다 :
spawn ssh -q [email protected] df -h
[email protected]'s password:
Information generated on Tue Apr 3 02:21:47 IRDT 2012
모든 아이디어의 사람들을?
의견을 보내 주셔서 감사합니다. 보안 정책으로 인해 공개 키 인증을 사용할 수 없습니다. –
STDOUT과 관련이 없다고 생각하십니까? –
은 "expect -c '...'2> & 1"로 테스트되었지만 동일한 결과가 발생했습니다. –