PHP 连接到 Telnet 服务器
Posted
技术标签:
【中文标题】PHP 连接到 Telnet 服务器【英文标题】:PHP connect to Telnet server 【发布时间】:2018-12-25 14:52:48 【问题描述】:我需要连接到服务器并通过 Telnet 发送命令,但在查找如何通过授权连接时遇到了一些麻烦。
我已经使用以下脚本连接,但我仍然需要输入用户名和密码才能访问。
<?php
$host="xxxxxxxxxxx";
$port = xxxxxxxxxx; // open a client connection
$fp = fsockopen ($host, $port, $errno, $errstr);
if (!$fp)
$result = "Error: could not open socket connection";
else // get the welcome message fgets ($fp, 1024); // write the user string to the socket
fputs($fp, $message); // get the result $result .= fgets ($fp, 1024); // close the connection
fputs ($fp, "END");
fclose ($fp); // trim the result and remove the starting ?
$result = trim($result);
$result = substr($result, 2); // now print it to the browser
?>
Server said: <? echo $result; ?>
?>
我一直在四处寻找,甚至在 PHP 文档上,但没有看到使用密码和用户名的方法。
我必须使用 POST 数据来发布我的用户名和密码吗?
【问题讨论】:
TELNET 协议 RFC tools.ietf.org/html/rfc854 在输入之前是否需要等待提示出现?见***.com/a/6280342/5947043。附言POST数据是什么意思?据我所知,这是一个 HTTP 概念,而不是 telnet。当然,如果套接字上的侦听器是 HTTP 服务器,您可以使用 telnet 连接发送 HTTP 命令,但那是另一回事了。你没有提到你正在连接什么服务或你想要发送什么样的命令 @ADyson 这是我在游戏服务器上运行的 VPS。游戏服务器使用 Telnet。 Telnet 只是打开一个 TCP 连接。之后您必须使用某些特定的协议来交换消息?有一个用于简单消息的基本 telnet 协议,但您无能为力。可能有一些进一步商定的格式用于构建消息。 【参考方案1】:正如其他人已经说过的,telnet 只是打开一个到服务器的套接字。这也是您对 fsockopen() 的调用所做的事情。您要连接的服务应该有一个关于您下一步可以做什么的定义。
假设连接到 FTP 服务器。建立连接后,您可以将 LIST 命令写入套接字。服务器将识别该命令并将文件列表发送回您的套接字。
在你的情况下,你的交换可能是这样的:
write: AUTH
read: OK
write: USERNAME username
read: OK
write PASSWORD password
read: STATUS OK
【讨论】:
所以我需要做的基本上是编写一个脚本来连接,然后是一个 if 语句,其中包含您在顶部共享的位?至于下一步做什么的定义,我不知道如何找出来。我使用的是我自己的 VPS 和游戏服务器。 在不知道你在做什么的情况下,我想你需要实现从你连接到的服务器读取和写入数据的部分。这通常在某种规范中详细说明。 我将如何使用 PHP 读取 "请输入密码" 行?我相信这是我被挂断的地方 我想你会使用类似 socket_read() 的东西从服务器读取数据。您可能会继续阅读,直到看到行终止符。也许它将是一个换行符 (\n)。如果所有这些都适用,那么您将比较您刚刚读入的内容,看看它是否是“请输入密码”。除此之外,恐怕有关此环境的详细信息太模糊,无法提供更多帮助。以上是关于PHP 连接到 Telnet 服务器的主要内容,如果未能解决你的问题,请参考以下文章
Javascript 无法连接到 PHP Ratchet WebSocket 服务器
是否可以创建一个通过 telnet 或 http 连接到设备的 OPC 服务器?
无法通过 telnet 连接到 smtp 服务器错误 504