我正在运行 Debian Squeeze Web 服务器。我已经在其上安装了 memcached,并将 memcached 配置为侦听 Unix 域套接字(at /tmp/memcached.sock
),因为它只需要从位于同一服务器上的网站接收消息。
它似乎工作正常,但我也想通过 shell 与 memcached 通信,以检查它是否在做我认为它在做的事情。
memcached 通过简单的 ASCII 协议接受消息(如果我理解正确的话)。如果它正在侦听 TCP/IP,我可以通过以下方式向它发送消息nc
:
$ echo "stats settings" | nc localhost 11211
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将该文本发送到域套接字。
在我的笔记本电脑(运行OS X Lion中),都nc
和telnet
有选择(-U
并-u
分别)使用域套接字。但是,在我的 Debian Squeeze Web 服务器上,这些选项不存在。
我们可以使用以下命令来测试telnet VIA端口;在以下示例中,我们测试端口 6667:
[root@kafka03 ~]# telnet kafka02 6667
Trying 103.64.35.86...
Connected to kafka02.
Escape character is '^]'.
^CConnection closed by foreign host
Run Code Online (Sandbox Code Playgroud)
由于在某些机器上我们不能使用 telnet(出于内部原因),有什么替代方法来检查端口,如 telnet?
我想设置一个 Apache Spark 集群,但我无法在端口 7077(Spark Master 正在运行的地方)从工作机器与主机通信。
所以我试图telnet
从工人机器到主人,这就是我所看到的:
root@worker:~# telnet spark 7077
Trying 10.xx.xx.xx...
Connected to spark.
Escape character is '^]'.
Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)
该命令立即以“连接被外部主机关闭”终止。它不会超时或任何事情。
我确认主机正在侦听端口,因为telnet
输出显示“已连接到火花”。——这也意味着连接成功。
这种行为的原因是什么?我想知道连接的关闭是否可能是我无法从我的工作机器与主机通信的原因。
我有许多 linux 机器,但它们的命令和磁盘空间非常有限。但它上面有telnet
命令。
我远程连接到这些探测器中的每一个(以编程方式)并通过 SSH 发出一行 linux 命令。
我需要运行一个命令来连接到特定机器,使用 telnet,然后立即断开连接。
我可以做到这一切,但立即断开连接部分。Telnet 会打开某种控制台或终端,我无法找出运行 telnet 命令然后立即断开连接的单行命令。
如果我这样做,我可以轻松解析文本输出的错误消息,因为无法连接到指定端口上的机器,这正是我正在寻找的。
那么如何运行单行命令来使用 telnet 连接到一台机器然后断开连接呢?
当我查看终端模拟器的长度和宽度时,stty size
它长 271 个字符,高 71 行。当我通过 SSH 登录到另一台服务器并执行时stty size
,它也是 271 个字符长和 71 行高。我什至可以登录一些 Cisco IOS 设备,终端仍然是 271 个字符长和 71 行高:
C1841#show terminal | i Len|Wid
Length: 71 lines, Width: 271 columns
C1841#
Run Code Online (Sandbox Code Playgroud)
现在,如果我在本地机器上调整终端模拟器(Gnome 终端)窗口的大小stty size
,远程服务器和 IOS 中的“显示终端”都会显示不同的行长和行数。终端长度和宽度如何通过 SSH 和 telnet 转发?
在谷歌搜索后,我发现我们可以telnet
将网络服务器连接到其 http 端口并用于GET
检索 html 页面。
例如:
$ telnet web-server-name 80
Run Code Online (Sandbox Code Playgroud)
但我无法理解这怎么可能?
我认为如果端口 80 用于 http 服务器,那么端口 80 只会侦听http
请求。但是我怎么能telnet
到一个HTTP
端口呢?
不是telnet
和HTTP
两个不同的协议吗?
我在我大学的代理服务器后面。它使用简单的用户名和密码验证。我将代理服务器连接到端口 3128。现在我想通过 telnet 简单地说出互联网上的任何网站,例如
$ telnet www.google.com 80
Run Code Online (Sandbox Code Playgroud)
这给了我
error telnet: could not resolve www.udacity.com/80: Name or service not known
Run Code Online (Sandbox Code Playgroud)
如何定义 telnet 的代理设置?我已经设置了环境变量http_proxy
和HTTP_PROXY
. 还应用了系统范围的代理。
我有一个考勤设备正在运行Linux OS
。我可以通过 telnet 会话连接此设备。设备中有一些文件我想下载并上传新文件。我怎样才能做到这一点?我对 Linux 操作系统知之甚少。你能帮忙吗!
我使用 telnet 连接到终端服务器,该服务器将流量代理到 RS-232 端口。
不幸的是,在使用某些设备时,无法发送CTRL+C字符 (0x03)。似乎本地客户端没有传输字符,而是捕获了按键,而我处于“其他模式”。我想要的只是发送一个角色。
为了调试这个,我一直在玩:
^] toggle termdata
Run Code Online (Sandbox Code Playgroud)
和
^] toggle options
Run Code Online (Sandbox Code Playgroud)
当我在无法工作的终端服务器上按CTRL+时会发生以下情况C:
telnet 10.10.129.101 2012
Trying 10.10.129.101...
Connected to termserv-val3 (10.10.129.101).
Escape character is '^]'.
^]
telnet> toggle options
Will show option processing.
^]
telnet> toggle termdata
Will print hexadecimal representation of terminal traffic.
SENT IAC IP
SENT DO TIMING MARK
Run Code Online (Sandbox Code Playgroud)
以下是在正常工作的终端服务器上发生的情况:
telnet termserv-val2 2012
Trying 10.10.128.93...
Connected to termserv-val2 (10.10.128.93).
Escape character is '^]'.
telnet> toggle options …
Run Code Online (Sandbox Code Playgroud) 我需要使用期望脚本在 700 个网络设备上做一些工作。我可以按顺序完成,但到目前为止运行时间约为 24 小时。这主要是由于建立连接所需的时间以及这些设备(旧设备)的输出延迟。我能够建立两个连接并让它们并行运行就好了,但是我能推多远呢?
我不认为我可以一次完成所有 700 个,肯定有一些限制。我的 VM 可以管理的 telnet 连接数。
如果我确实尝试在这样的某种循环中启动其中的 700 个:
for node in `ls ~/sagLogs/`; do
foo &
done
Run Code Online (Sandbox Code Playgroud)
和
CPU 12 个 CPU x Intel(R) Xeon(R) CPU E5649 @ 2.53GHz
内存 47.94 GB
我的问题是:
foo
还是盒子会崩溃?不幸的是,我在公司生产环境中运行,所以我不能完全尝试看看会发生什么。