Windows에서 컴퓨터 정보를 캡처하는 도구로 php를 사용하여 로깅 기능을 만들려고합니다. 매 15 초마다 txt 파일이 내부 정보로 생성됩니다. 나는 사용자가 다른 페이지에 액세스하고 중단되지 않는 동안 백그라운드에서 실행되도록하고 싶습니다. 여기 매 15 초마다 PHP 코드의 일부를 반복하십시오.
내가$query = "SELECT hostname FROM computers ORDER BY hostname ASC";
$computer_search = mysql_query($query);
confirm_query($computer_search);
while ($computers = mysql_fetch_array($computer_search)){
$COMP = $computers['hostname'];
$time = time();
// 1 is the counter entered into the perl script
shell_exec('nohup perl logger.pl ' . $COMP . ' 1 > /dev/null 2> /dev/null >> logs/' . $COMP . '-' . $time . '.txt');
}
를 사용하려고 내가 지금 처음
<?php
$tracker = $_GET['counter'];
if (isset($tracker) && $tracker == 1)
{
$_SESSION['tracker'] = 1;
$query = "SELECT hostname FROM computers ORDER BY hostname ASC";
$computer_search = mysql_query($query);
confirm_query($computer_search);
while ($computers = mysql_fetch_array($computer_search)){
$COMP = $computers['hostname'];
$time = time();
shell_exec('perl logger.pl ' . $COMP . ' >> logs/' . $COMP . '-' . $time . '.txt');
}
redirect_to('index.php?tracker=1');
}
elseif (isset($tracker) && $tracker == 0)
{
$_SESSION['tracker'] = 0;
redirect_to('index.php?tracker=0');
}
?>
을 사용하고 코드입니다 그러나 코드는 하나의 컴퓨터의 정보를 캡처하고 캡처하기 전에 루프에 걸리면 다음 컴퓨터 정보. 반면에 첫 번째 코드는 모든 컴퓨터의 데이터 만 캡처하지만 한 번만 캡처합니다.
logger.pl에 관해서는 여기 내가 한 것입니다.
!/usr/bin/perl -w
use BER;
use SNMP_util;
use SNMP_Session;
$MIB1 = ".1.3.6.1.2.1.25.3.3.1.2"; #Cpu Processors
$MIB2 = ".1.3.6.1.2.1.1.3"; #System Uptime
$MIBIPAdd = ".1.3.6.1.2.1.4.20.1.1";
$HOST = shift;
# taken out for 1st code
#$tracker = shift;
#while ($tracker == 1)
{
print "Computer Name: $HOST\n";
$count = 0;
# ($MIB1) && ($HOST) || die "Usage: $0 MIB_OID HOSTNAME";
(@values) = &snmpwalk("$HOST","$MIB1");
foreach $value (@values)
{
$count++;
if ($value) {
$goodvalue = &strip_comment($value);
print "CPU Usage of Processor $count: $goodvalue%\n"; }
if ($value > 90){
print "Warning: CPU Usage over 90%! \n"
}
else { warn "No response from host :$HOST:\n"; }
}
(@valuesIP) = &snmpwalk("$HOST","$MIBIPAdd");
$ipaddress = &strip_comment($valuesIP[1]);
print "IP Address: $ipaddress \n";
($value) = &snmpwalk("public\@$HOST","$MIB2");
if ($value) {
$goodvalue = &strip_comment($value);
print "System Up Time: $goodvalue\n"; }
else { print "No response from host: $HOST\n"; }
print "\n";
sleep(15);
}
sub strip_comment
{
$theline = shift;
$where = index($theline, ":");
if($where eq -1){
return $theline;
}
$selectedpart = substr($theline, $where);
$goodpart = substr($selectedpart, 1);
return $goodpart;
}
크론을 사용하고 계십니까? – dmp
펄 줄이 잘못되었습니다. – Ether
안녕 Ether, 그래서 내가 뭘 사용해야합니까? -w없이 시도했지만 작동하지 않습니다. – vrerer