PHP fsockopen() общается через Telnet

Я ищу руководство по использованию fsockopen() для связи с система telnet.... Я подключен нормально, но команда не отправляется. Я видел документацию fwrite(), в которой показано, как люди отправляют заголовки.

В настоящее время команда, которую я запускаю для сервера telnet, — version через $class->send("version");. Нужно ли мне отправлять заголовки или что-то еще вместе с этим, чтобы сервер telnet принял команду, или я могу просто отправить это?

/**
 * Connect to the GMC telnet system
 */
public function connect () {
    $this->connection = fsockopen($this->socket['host'], $this->socket['port'], $errorNumber, $errorMessage, 30);
    if (!$this->connection) {
        $this->error = 'Unable to connect to GMC: '.$errorMessage.' ('.$errorNumber.')';
        return false;
    }
    stream_set_timeout($this->connection, $this->commandTimeout);
    return true;
}

/**
 * Send a command to GMC
 */
public function send ($command) {
    //write to socket
    if (fwrite($this->connection, $command) === false) {
        $this->error = 'Unable to write to socket';
        return false;
    }

    sleep(1);

    //read socket
    if (($response = fgets($this->connection)) === false) {
        $this->error = 'Unable to write to socket';
        return false;
    }

    return $response;
}

/**
 * Disconnects from the GMC telnet system
 */
public function disconnect () {
    return fclose($this->connection);
}

person Webnet    schedule 18.08.2011    source источник
comment
Сервер telnet подразумевает, что вы используете учетную запись удаленной оболочки... вы выполнили для этого процесс входа в систему? Вы не можете просто подключиться к telnet и начать выдачу команд - сначала нужно будет ввести имя пользователя/пароль, прежде чем перейти к этапу оболочки.   -  person Marc B    schedule 18.08.2011
comment
Я подключился к телнету через свою локальную машину, он не запрашивал имя пользователя или пароль. Это на локальном сервере, к которому никогда не подключаются пользователи, только приложения.   -  person Webnet    schedule 19.08.2011
comment
даже если это только на вашем компьютере, есть порт telnet для входа в систему. первое, что вы должны отправить, это имя пользователя/пароль, С \n, чтобы указать, что вы закончили печатать.   -  person Marc B    schedule 19.08.2011


Ответы (1)


По-видимому, все, что мне нужно было сделать, это убедиться, что я включил \n в конце своей команды!!

person Webnet    schedule 18.08.2011