I did the following, I've followed your advice and wrote my own, that is listed below. It's a function that has 3 entry arguments, IP, Port and Protocol. It returns if the Service is UP or DOWN. Take a Look, and see if we can enhance it's speed. function servstatus($remote_ip, $remote_ip_port, $remote_ip_proto) { if ($remote_ip_proto == "tcp") { $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); // Turning off Warning Messages $i_error_old=error_reporting(); error_reporting($i_error_old & ~ (E_WARNING)); if ($connect = socket_connect($socket, "$remote_ip", "" . $remote_ip_port . "")) { return true; socket_set_block($socket); socket_close($socket); unset($connect); } else { return false; socket_set_nonblock($socket); socket_close($socket); unset($connect);} } else { // Turning off Warning Messages $i_error_old=error_reporting(); error_reporting($i_error_old & ~ (E_WARNING)); $socket = fsockopen("udp://$remote_ip", "$remote_ip_port", &$errno, &$errstr, 2); $timeout = 1; if (!$socket) { return true; } socket_set_timeout ($socket, $timeout); $write = fwrite($socket,"\x00"); if (!$write) { return true; } $startTime = time(); $header = fread($socket, 1); $endTime = time(); $timeDiff = $endTime - $startTime; if ($timeDiff >= $timeout) { fclose($socket); return true; } else { fclose($socket); return false; } } } On 5/25/06, ron@xxxxxxxxxxxxx <ron@xxxxxxxxxxxxx> wrote:
On Thu, 25 May 2006, Phil Martin wrote: > Hi everybody, > > I'm new to the list and also new to php, I hope I can learn many > things from here. > My first doubt is the following: I'm trying to create a small monitor > system, just to suit my needs in monitoring some services in my application. > I've found some functions that return to me the service by port, name and so > on (getservbyport, getservbyname). What I need is to monitor remote server > services, I mean, lets suppose I have a server 192.168.0.2 with a ssh server > running. I'd like to see the status (up/down) of that server from another > machine, like 192.168.0.1. I don't want to use some monitoring softwares out > there in the web, i know they exist and in fact I use many of them like > nagios, cacti and so on, but I'm planning to do my own small solution. > What I need is some function that asks me a remote IP, port and > protocol as input data and results TRUE/FALSE (any boolean value), just to > see if the service is up. I did that making a function using nmap, but i > don't want to hold that solution to linux, I'd like to use it at other OS. > My function's syntax is like this > > <?php > $ssh_status=service_status (192.168.0.2, 22, tcp); > if ($ssh_status==TRUE); { > echo "Service UP"; > } else { > echo "Service DOWN"; > } > ?> > > > Does anyone know if there is a similar function in PHP ? I'd be very > happy if somebody knows about a function like that. > > Thanks in advance > > att. > Felipe Martins > > Why not use php and curl and write your own. Good way to start learning php. Or you can do like we do and use php and curl to make sure you can actually get results from the server and use a shell script or php script on each remote server running from cron every 10/.. minutes that checks the processes you want monitored and sends an email to a pager if it detects a problem. That would allow you to not only monitor if a service is running but also server load, file systems filing up, etc.