Dynadot

Have your own service status script! (CPANEL, PHP)

Spaceship Spaceship
Watch
Impact
20
this script is designed for users with there own host running cpanel with php

demo can be seen here
http://www.intentio-server.com

the code:
PHP:
<?php
/*
*   +------------------------------------------------------------------------------+
*       CPANEL STATUS SCRIPT                                                               
*   +------------------------------------------------------------------------------+
*       Copyright Notice(s)                                                        
*   +------------------------------------------------------------------------------+
*       Disclaimer Notice(s)                                                         
*       ex: This code is freely given to you and given "AS IS", SO if it damages     
*       your computer, formats your HDs, or burns your house I am not the one to
*       blame.                                                                    
*       Moreover, don't forget to include my copyright notices and name.              
*   +------------------------------------------------------------------------------+
*       Author(s): Crooty.co.uk (Adam C)                                   
*   +------------------------------------------------------------------------------+
*/ 

$data .= "
<style>
td,body
{
	font-family: Arial, Helvetica, sans-serif;
	font-size: 8pt;
	color: #444444;
}
</style>
<br>
    <center>
     <div style=\"border-bottom:1px #999999 solid;width:480;\"><b>
       <font size='1' color='#3896CC'>Service Status</font></b>
     </div> 
   </center>
<br>";

//configure script
$timeout = "1";

//set service checks
$port[1] = "80";       $service[1] = "Apache";                  $ip[1] ="";
$port[2] = "21";       $service[2] = "FTP";                     $ip[2] ="";
$port[3] = "3306";     $service[3] = "MYSQL";                   $ip[3] ="";
$port[4] = "25";       $service[4] = "Email(POP3)";             $ip[4] ="";
$port[5] = "143";      $service[5] = "Email(IMAP)";             $ip[5] ="";
$port[6] = "2095";     $service[6] = "Webmail";                 $ip[6] ="";
$port[7] = "2082";     $service[7] = "Cpanel";                  $ip[7] ="";
$port[8] = "80";       $service[8] = "Internet Connection";     $ip[8] ="google.com";
$port[9] = "2086";     $service[9] = "WHM";                     $ip[9] ="";

//
// NO NEED TO EDIT BEYOND HERE 
// UNLESS YOU WISH TO CHANGE STYLE OF RESULTS
//

//count arrays
$ports = count($port);
$ports = $ports + 1;
$count = 1;

//beggin table for status
$data .= "<table width='480' border='1' cellspacing='0' cellpadding='3' style='border-collapse:collapse' bordercolor='#333333' align='center'>";

while($count < $ports){

	 if($ip[$count]==""){
	   $ip[$count] = "localhost";
	 }

		$fp = @fsockopen("$ip[$count]", $port[$count], $errno, $errstr, $timeout);
		if (!$fp) {
			$data .= "<tr><td>$service[$count]</td><td bgcolor='#FFC6C6'>Offline </td></tr>";
		} else {
			$data .= "<tr><td>$service[$count]</td><td bgcolor='#D9FFB3'>Online</td></tr>";
			fclose($fp);
		}
	$count++;
fclose($fp);

} 

//close table
$data .= "</table>";

echo $data;
?>

installation: copy to web server THATS IT!

should be fairly self explanitry

to include on your website you can either link to it your use include(); (if you use include remember to rename the extention to .php)

lemme know what you think :)

i made it so it saves me logging into cpanel to check what the servers up to and thought id share it


UPDATE:
if you wish to display server uptime and server loads on the script add this to the code (REMEMBER: it must be placed inside the <? and ?> for it to work

PHP:
//
// SERVER INFORMATION
//

$data1 .= "
<br>
    <center>
     <div style=\"border-bottom:1px #999999 solid;width:480;\"><b>
       <font size='1' color='#3896CC'>Server Information</font></b>
     </div> 
   </center><BR>";

$data1 .= "<table width='480' border='1' cellspacing='0' cellpadding='3' style='border-collapse:collapse' 

bordercolor='#333333' align='center'>";

//GET SERVER LOADS
$loadresult = @exec('uptime'); 
preg_match("/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/",$loadresult,$avgs);


//GET SERVER UPTIME
  $uptime = explode(' up ', $loadresult);
  $uptime = explode(',', $uptime[1]);
  $uptime = $uptime[0].', '.$uptime[1];

$data1 .= "<tr><td>Server Load Averages </td><td>$avgs[1], $avgs[2], $avgs[3]</td>\n";
$data1 .= "<tr><td>Server Uptime        </td><td>$uptime                     </td></tr>";
$data1 .= "</table>";
echo $data1;

B-)
 
Last edited:
1
•••
The views expressed on this page by users and staff are their own, not those of NamePros.
I dont think it will be an issue, it works for me normally anyway.

PJ
 
0
•••
I was just worried that it might open 1000 connections and crash the server. If you're on Lindows that'll probably happen. A 386 too ;)
 
0
•••
But hey, Im not on Lindows am I, Im on linux ;)

PJ
 
0
•••
so there isnt, thanks for spotting that bug i will edit the code and add it in, ive been using it since i built the script and it works perfectly
 
0
•••
Very nice! When my team gets our new web-host set up (we'll be the best ;), a little more expensive than the rest, but, you just wait and see :D), this should be useful.
 
0
•••
I got it up at http://dotnamehost.com/stats.php I like it I will play with it. By the way I had to remove the fclose parts it was giving me errors not sure why maybe my server setup but I removed them and it worked should I have done that? I don't see any problems though and it didn't crash server etc so I think it works like that.
 
0
•••
im glad you liked it :)

the fclose bit should have worked and still works on mine ok :s its not really required it just removes any bits out of memory/tmp etc but they should go when the script terminates.
 
0
•••
Excellent! I'll be using this ^_^
 
0
•••
Warning: fclose(): 2 is not a valid stream resource in /home/username/public_html/status.php on line 76

Warning: fclose(): 3 is not a valid stream resource in /home/username/public_html/status.php on line 76

Warning: fclose(): supplied argument is not a valid stream resource in /home/username/public_html/status.php on line 76

Warning: fclose(): 4 is not a valid stream resource in /home/username/public_html/status.php on line 76

Warning: fclose(): 5 is not a valid stream resource in /home/username/public_html/status.php on line 76

Warning: fclose(): 6 is not a valid stream resource in /home/username/public_html/status.php on line 76

Warning: fclose(): 7 is not a valid stream resource in /home/username/public_html/status.php on line 76

Warning: fclose(): 8 is not a valid stream resource in /home/username/public_html/status.php on line 76

Warning: fclose(): 9 is not a valid stream resource in /home/username/public_html/status.php on line 76
 
0
•••
i386 said:
Noticed one thing that *might* be an issue. There is no fclose if the socket is successful.
I believe there is :) (Unless this was added afterwards).

if (!$fp) {
$data .= "<tr><td>$service[$count]</td><td bgcolor='#FFC6C6'>Offline </td></tr>";
} else {
$data .= "<tr><td>$service[$count]</td><td bgcolor='#D9FFB3'>Online</td></tr>";
fclose($fp);
}
$count++;
fclose($fp);
 
0
•••
Thanks for this code, seems like an old thread but . . . Rep added.
 
0
•••
Code:
if (!$fp) {
$data .= "<tr><td>$service[$count]</td><td bgcolor='#FFC6C6'>Offline </td></tr>";
fclose($fp);
} else {
$data .= "<tr><td>$service[$count]</td><td bgcolor='#D9FFB3'>Online</td></tr>";
fclose($fp);
}
$count++;

it should be like this, or it may try to close connections that are already closed and therefore some errors
 
0
•••
None of the code modifications really worked, do you think you can post the entire script again with your modification? I might have inserted the modification in the wrong place or something.
 
0
•••
Excellent script...thanks will use it when I get free!
 
0
•••
demo url : http://www.imghosted.net/service.php
try this xeserve this should fix your error
full code (working of course)
Code:
<?php 
/* 
*   +------------------------------------------------------------------------------+ 
*       CPANEL STATUS SCRIPT                                                                
*   +------------------------------------------------------------------------------+ 
*       Copyright Notice(s)                                                         
*   +------------------------------------------------------------------------------+ 
*       Disclaimer Notice(s)                                                          
*       ex: This code is freely given to you and given "AS IS", SO if it damages      
*       your computer, formats your HDs, or burns your house I am not the one to 
*       blame.                                                                     
*       Moreover, don't forget to include my copyright notices and name.               
*   +------------------------------------------------------------------------------+ 
*       Author(s): Crooty.co.uk (Adam C)                                    
*   +------------------------------------------------------------------------------+ 
*/  

$data .= " 
<style> 
td,body 
{ 
    font-family: Arial, Helvetica, sans-serif; 
    font-size: 8pt; 
    color: #444444; 
} 
</style> 
<br> 
    <center> 
     <div style=\"border-bottom:1px #999999 solid;width:480;\"><b> 
       <font size='1' color='#3896CC'>Service Status</font></b> 
     </div>  
   </center> 
<br>"; 

//configure script 
$timeout = "1"; 

//set service checks 
$port[1] = "80";       $service[1] = "Apache";                  $ip[1] =""; 
$port[2] = "21";       $service[2] = "FTP";                     $ip[2] =""; 
$port[3] = "3306";     $service[3] = "MYSQL";                   $ip[3] =""; 
$port[4] = "25";       $service[4] = "Email(POP3)";             $ip[4] =""; 
$port[5] = "143";      $service[5] = "Email(IMAP)";             $ip[5] =""; 
$port[6] = "2095";     $service[6] = "Webmail";                 $ip[6] =""; 
$port[7] = "2082";     $service[7] = "Cpanel";                  $ip[7] =""; 
$port[8] = "80";       $service[8] = "Internet Connection";     $ip[8] ="google.com"; 
$port[9] = "2086";     $service[9] = "WHM";                     $ip[9] =""; 

// 
// NO NEED TO EDIT BEYOND HERE  
// UNLESS YOU WISH TO CHANGE STYLE OF RESULTS 
// 

//count arrays 
$ports = count($port); 
$ports = $ports + 1; 
$count = 1; 

//beggin table for status 
$data .= "<table width='480' border='1' cellspacing='0' cellpadding='3' style='border-collapse:collapse' bordercolor='#333333' align='center'>"; 

while($count < $ports){ 

     if($ip[$count]==""){ 
       $ip[$count] = "localhost"; 
     } 

        $fp = @fsockopen("$ip[$count]", $port[$count], $errno, $errstr, $timeout); 
        if (!$fp) { 
            $data .= "<tr><td>$service[$count]</td><td bgcolor='#FFC6C6'>Offline </td></tr>"; 
	fclose($fp); 
        } else { 
            $data .= "<tr><td>$service[$count]</td><td bgcolor='#D9FFB3'>Online</td></tr>"; 
            fclose($fp); 
        } 
    $count++; 


}  

//close table 
$data .= "</table>"; 

echo $data; 
 // 
// SERVER INFORMATION 
// 

$data1 .= " 
<br> 
    <center> 
     <div style=\"border-bottom:1px #999999 solid;width:480;\"><b> 
       <font size='1' color='#3896CC'>Server Information</font></b> 
     </div>  
   </center><BR>"; 

$data1 .= "<table width='480' border='1' cellspacing='0' cellpadding='3' style='border-collapse:collapse'  

bordercolor='#333333' align='center'>"; 

//GET SERVER LOADS 
$loadresult = @exec('uptime');  
preg_match("/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/",$loadresult,$avgs); 


//GET SERVER UPTIME 
  $uptime = explode(' up ', $loadresult); 
  $uptime = explode(',', $uptime[1]); 
  $uptime = $uptime[0].', '.$uptime[1]; 

$data1 .= "<tr><td>Server Load Averages </td><td>$avgs[1], $avgs[2], $avgs[3]</td>\n"; 
$data1 .= "<tr><td>Server Uptime        </td><td>$uptime                     </td></tr>"; 
$data1 .= "</table>"; 
echo $data1;  

?>

the only thing i did was putting the fclose($fp) in a diferente cicle since it was giving me errors aswell... hope it helps
 
Last edited:
0
•••
Warning: fclose(): supplied argument is not a valid stream resource in /home/username/public_html/status.php on line 71

That is the one error I recieve now when I run the script
 
0
•••
Great.
I am gonna use it.
Thanks a lot.
 
0
•••
xeserve i realy don't know what's going on...maybe some of your server configuration, the script works fine
 
0
•••
glad it helps guys :)

i might rebuild soon and make it a bit nicer to use :D
 
0
•••
I tried Last posted code but i dont get server uptime and load status.....

With first code posted in first post i got error with fscopen...
Is there any new code of this GREAT status script??

THnx
 
0
•••
I just use the following:

PHP:
<?PHP system('uptime'); ?>

Gives out; server time, uptime, users, and load averages.

- Vince
 
0
•••
you can even simplify it to:
PHP:
<?=`uptime`?>
when you just want the uptime/load etc. :P


nice script btw.
 
0
•••
Ok, well..was bored so I thought I'd mess around w/this script :) Here's what I ended up with...
PHP:
<?php

/*
*   +------------------------------------------------------------------------------+
*       CPANEL STATUS SCRIPT
*   +------------------------------------------------------------------------------+
*       Copyright Notice(s)
*   +------------------------------------------------------------------------------+
*       Disclaimer Notice(s)
*       ex: This code is freely given to you and given "AS IS", SO if it damages
*       your computer, formats your HDs, or burns your house I am not the one to
*       blame.
*       Moreover, don't forget to include my copyright notices and name.
*   +------------------------------------------------------------------------------+
*       Author(s): Crooty.co.uk (Adam C)
*   +------------------------------------------------------------------------------+
*/

// Configure script 
$timeout = 1; 

// Set service checks 
$port[1]    = 80;
$service[1] = 'Apache';
$ip[1]      = '';

$port[2]    = 21;
$service[2] = 'FTP';
$ip[2]      = '';

$port[3]    = 3306;
$service[3] = 'MYSQL';
$ip[3]      = '';

$port[4]    = 25;
$service[4] = 'Email(POP3)';
$ip[4]      = '';

$port[5]    = 143;
$service[5] = 'Email(IMAP)';
$ip[5]      = '';

$port[6]    = 2095;
$service[6] = 'Webmail';
$ip[6]      = '';

$port[7]    = 2082;
$service[7] = 'Cpanel';
$ip[7]      = '';

$port[8]    = 80;
$service[8] = 'Internet Connection';
$ip[8]      = 'google.com';

$port[9]    = 2086;
$service[9] = 'WHM';
$ip[9]      = '';

//
// NO NEED TO EDIT BEYOND HERE UNLESS YOU WISH TO CHANGE STYLE OF RESULTS
//

?>
<html>
<head>
<title>Service Status</title>
<style type="text/css">
<!--

td, body
{
  font-family: Arial, Helvetica, sans-serif;
  font-size: 8pt;
  color: #444444;
}

.status_header
{
  border-bottom: 1px solid #999999;
  width: 480;
  color: #3896CC;
}

.status_table
{
  border: 1px solid #333333;
  border-collapse: collapse;
  width: 480;
}

td
{
  border: 1px solid #333333;
}

.online
{
  background-color: #D9FFB3
}

.offline
{
  background-color: #FFC6C6;
}

-->
</style>
</head>

<body>

<br />
<center>
  <div class="status_header"><strong>Service Status</strong></div>
</center>
<br />

<table class="status_table" cellspacing="0" cellpadding="3" align="center">
<?php 

// Count arrays
$ports = count($port) + 1;
$count = 1;

while ($count < $ports)
{
    if ($ip[$count] == '')
    {
        $ip[$count] = 'localhost';
    }

    $fp = @fsockopen($ip[$count], $port[$count], $errno, $errstr, $timeout);

    if (!$fp)
    {
        echo "<tr>\n  <td>{$service[$count]}</td>\n  <td class=\"offline\">Offline</td>\n</tr>\n";
        fclose($fp);
    }
    else
    {
        echo "<tr>\n  <td>{$service[$count]}</td>\n  <td class=\"online\">Online</td>\n</tr>\n";
        fclose($fp);
    }
    $count++;
}

//
// SERVER INFORMATION
//
?>
</table>

<br />
<center>
  <div class="status_header"><strong>Server Information</strong></div>
</center>
<br />

<table class="status_table" cellspacing="0" cellpadding="3" align="center">

<?php

// GET SERVER LOADS
$loadresult = @exec('uptime');
preg_match("/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/", $loadresult, $avgs);

// GET SERVER UPTIME
$uptime = explode(' up ', $loadresult);
$uptime = explode(',', $uptime[1]);
$uptime = $uptime[0] . ', ' . $uptime[1];

echo "<tr>\n  <td>Server Load Averages</td>\n  <td>$avgs[1], $avgs[2], $avgs[3]</td>\n</tr>\n<tr>\n  <td>Server Uptime</td>\n  <td>$uptime</td>\n</tr>\n"; 

?>
</table>

</body>
</html>
 
Last edited:
0
•••
I cant still get uptime, and server load, using the latest post hier.

OS: Centos with CPANEL and Fantastico

Hier is imag of what i get in attachment...
 
Last edited:
0
•••
crow said:
I cant still get uptime, and server load, using the latest post hier.

OS: Centos with CPANEL and Fantastico

Hier is imag of what i get in attachment...


possibly your php installation is causing the trouble.

you need to have the exec() function enabled to run the uptime command.

see line:
PHP:
//GET SERVER LOADS 
$loadresult = @exec('uptime');
 
0
•••
  • The sidebar remains visible by scrolling at a speed relative to the page’s height.
Back