如何使用PHP检查端口2082和2222以检测服务器的控制面板


how to check ports 2082 and 2222 with php for detecting server's control panel

如何使用php检查端口2082,2222以检测服务器的控制面板?

$ports = array(2082 => 'cpanel', 2222 => 'directadmin' , ....);
$panel = "";
foreach($ports as $port => $panelName){
   // some codes for checking the port's
   // if(something)
         $panel = $panelName;
}

没有直接的解决方案,您需要实现自己的创意方法。 您可能需要检测一个带有打开套接字的控制面板,而另一个使用特定的文件存在(例如。 Cpanel将API文件放在php包含路径上)或任何其他想法。

您可以将此类用于此目的

namespace Model;
// usage:
//include 'detectControlPanel';
//$object = new 'model'detectControlPanel();
//$result = $object->getDetect();
//var_dump($result);
class detectControlPanel
{
public $debug = false;
protected $detect = array();
public function getDetect()
{
    return $this->detect;
}
public function __construct($debug = false)
{
    $this->run();
    $this->debug = $debug;
    $this->debug($this->detect);
}
public function run()
{
    $this->detect['cpanel'] = $this->isCpanel();
    $this->detect['virtualmin'] = $this->isVirtualmin();
    $this->detect['plesk'] = $this->isPlesk();
    $this->detect['directadmin'] = $this->isDirectadmin();
    return $this->detect;
}
private function isCpanel()
{
    try {
        $this->telnet('localhost', 2082);
        return true;
    } catch ('Exception $ex) {
        $this->debug($ex);
        return false;
    }
}
private function isVirtualmin()
{
    try {
        $this->telnet('localhost', 10000);
        return true;
    } catch ('Exception $ex) {
        $this->debug($ex);
        return false;
    }
}
private function isDirectadmin()
{
    try {
        $this->telnet('localhost', 2222);
        return true;
    } catch ('Exception $ex) {
        $this->debug($ex);
        return false;
    }
}
private function isPlesk()
{
    try {
        $this->telnet('localhost', 8443);
        return true;
    } catch ('Exception $ex) {
        $this->debug($ex);
        return false;
    }
}
private function debug($input)
{
    if ($this->debug == true) {
        if (gettype($input) == 'string') {
            echo '<br>' . "'n";
            echo $input;
            echo '<br>' . "'n";
        } elseif (gettype($input) == 'array') {
            echo '<pre>' . "'n";
            print_r($input);
            echo '</pre>' . "'n";
        } elseif (gettype($input) == 'object' && get_class($input) == 'Exception') {
            echo '<pre>' . "'n";
            echo $input->getMessage();
            echo '</pre>' . "'n";
        } else {
            var_dump($input);
        }
    }
}
private function telnet($hostname, $port)
{
    if (!$hostname)
        throw new 'Exception("empty host name");
    if (!$port)
        throw new 'Exception("empty port number");
    $ipAddress = gethostbyname($hostname);
    $link = @fsockopen($ipAddress, $port, $errno, $error);
    if ($error) {
        throw new 'Exception($error, $errno);
    }
    if ($link) {
        return true;
    }
    return false;
}
}