我使用 ssh 隧道通过 RDP 进入我的家庭计算机(“家庭”)。
有时,在家庭中运行的隧道软件会崩溃并且 RDP 端口停止建立隧道。我尝试通过在家里安排一个脚本每 15 分钟运行一次来解决此问题,该脚本在我的路由器上运行“netstat -tln”,并在隧道 RDP 端口不再打开时重新启动隧道软件。
不幸的是,偶尔会发生崩溃,导致 RDP 端口保持打开状态并接受连接,但不传输任何流量。例如,根据 netstat,端口保持打开状态,如果我尝试远程登录到该端口,它会连接并显示一个空白屏幕。如果我尝试通过隧道进行 RDP,会话会连接,但会在“配置远程会话”上旋转。
底线:我希望我的“看门狗”脚本实际尝试连接到 RDP 端口以确定隧道是否仍然良好。如何探测端口以测试它是否是开放的 RDP 端口?
我认为理想的测试实际上是探测 RDP 端口,但我也愿意接受其他想法。
我似乎搜索了许多非常相似的问题,但从未找到有用的东西。我正在尝试使用树莓派(第二代)与 Wifi OBDII 传感器进行通信。我可以使用以下命令
nc -C 192.168.0.10 35000
Run Code Online (Sandbox Code Playgroud)
192.168.0.10 是汽车传感器,35000 是端口。这并不重要,因为连接似乎没问题。无论如何,我可以打开一个 nc 实例,然后键入,例如“0145”(传感器代码),作为回报,我在 nc 会话的输出上得到该传感器的值(例如,我的引擎的 RPM) )。效果很好。我想做的是将命令从文本文件传输到 nc 会话中以进行绘图。因此,我的理想结果是将 RPM 值和相关时间的恒定流转储到文本文件中。我可以从那里工作。但是,我并不完全知道该怎么做。我已经设置了一个commands.txt,其中有数千行“0145”,我想读取该文件并将其逐行传递给nc(我可能可以通过睡眠来控制采样间隔),然后读取输出并将其存储到文本文件中。我知道这个问题与标准输入和标准输出以及管道有关,但无论出于何种原因,我一直无法完全理解它。我绝不是其中任何一个的大师。我还想编写整个过程的脚本。
现在,如果我跑
cat <(echo 0145) - | nc -C 192.168.0.10 35000
Run Code Online (Sandbox Code Playgroud)
这为我提供了我想要的终端输出,但仅适用于单个值。但是,一旦我尝试将其放入循环中,将 0145 放入脚本中的 $commands 中,并从 txt 文件中逐行获取 $commands ,它就停止工作。事实上,即使我将其保留为 0145 并且不使用变量,它也会在任何循环或 if 块内停止工作。
所以,长话短说,我想编写脚本将 txt 文件逐行发送到 nc 连接,然后我想将每个响应提取到另一个文件中。如果它是无脚本的,我可以打开该 nc 连接并每 1 秒发送 0145 并获取这些响应(仍然不知道如何将它们传递到文件),但这几乎没有效率。我觉得应该有一种更简单的方法来做到这一点。我有点菜鸟,但我想我可以在这里尝试一下。任何帮助是极大的赞赏
这个问题与https://superuser.com/questions/270698/how-is-it-called-when-listeningconnecting-two-sockets-and-exchanged-data-betw有某种关系
在测试设置中,我打开了三个终端窗口
Term1: "nc -l 55545"
Term2: "nc -l 55546"
Term3: "socat tcp:localhost:55545 tcp:localhost:55546"
Run Code Online (Sandbox Code Playgroud)
Term1 的输入现在出现在 Term2 中,Term2 的输入出现在 Term1 中。
这是所需的行为。如何仅使用 nc 来实现此行为?
当我跑进去
Term3: "nc localhost 55545 | nc localhost 55546"
Run Code Online (Sandbox Code Playgroud)
然后 Term1 的输入出现在 Term2 中,但 Term2 的输入出现在 Term3 中。我怎样才能使管道双向?如果可能,没有临时文件。
我可以用来netcat
在两台计算机之间传输文件。
# Server
nc -l -p 8080 < file
# client
nc 192.168.1.101 8080 > file
Run Code Online (Sandbox Code Playgroud)
我可以使用netcat
从 Internet 下载 URL 之类的wget
吗?
我在使用 BusyBox 1.1.3 附带的 Netcat 发出 HTTP 请求然后接收响应时遇到问题。NC 命令似乎在到达我发送的请求文件末尾时立即退出。-w 选项似乎是为这种情况设计的,但是查看源代码,-w 选项似乎不可能对接收行为产生任何影响。
BusyBox 上此版本 NC 的源代码在这里...
http://git.busybox.net/busybox/tree/networking/nc.c?id=5cbe2519d8776bc15e0bc4dc7aeb6adc53e50b81
我究竟做错了什么?有没有办法通过这个版本的 NC 将文件发送到服务器,然后等待接收响应?关于在脚本中执行此操作的其他可能方法的任何创意?
请注意,这是一个嵌入式系统,我无法升级 BusyBox 版本或上传新的可执行文件 - 我只能使用脚本文件和已经可用的 BusyBox 可执行文件。另请注意,系统上没有可用的 WGET。
谢谢!
-乔希
我有一个连接到 LAN 的 Raspberry Pi (Debian Linux),它可以从某些连接的设备读取数据并将其输出到 STDOUT。
假设该程序在“服务器”上运行,我想将脚本的输出提供/usr/bin/data
给端口 1234。
我希望任何客户端通过连接到该端口来提取该脚本的输出,使用类似
nc Server 1234 > ServerData.txt
我希望服务器保持活动状态,为每个连接运行脚本,提供数据,然后关闭与客户端的连接。服务器需要保持活动状态并等待下一个连接。
在服务器上运行的 netcat 命令是什么?
我在办公室的一些计算机上设置了 nc。他们像这样连接到我们的服务器:
nc 192.168.1.2 3291 -e cmd
有谁知道如何列出传入的连接尝试而不是接受连接尝试?不是:
nc -l 192.168.1.2 3291
编辑:使用 tcpdump 解决了列表部分。问题的剩余部分:
如何在 nc 中仅接受来自特定主机的连接?即、192.168.1.6
、192.168.1.7
、 和192.168.1.8
都要求连接,而我们只想与 交谈192.168.1.7
。有什么办法可以用 nc 做到这一点吗?
我是服务器端开发人员,习惯调用命令nc
来检查远程端口是否打开。
突然,安全人员禁止了该命令,一旦我使用该nc
命令,我对 EC 实例的访问权限就会丢失。
他们说
使用
telnet
。
我的问题是
nc
命令危险吗?netcat ×8
linux ×4
networking ×3
bash ×2
busybox ×1
cat ×1
command-line ×1
security ×1
socat ×1
ssh-tunnel ×1
stdin ×1
tcp ×1
windows ×1