shell - 通过 netcat session 的 vi

标签 shell vi netcat

是否可以通过 netcat 使用 vi?

服务器:

mkfifo tun; sh tun | netcat -l 4444 > tun

客户:
netcat SERVER_IP 4444

会给我远程shell,但是发送特殊的热键是个问题,比如我不能按电调在 vi 中进入“正常模式”。

或者最好的选择将是 sed ?

最佳答案

此命令将来自 nc 的输入作为脚本运行,它会失败,原因与此脚本不会编辑文件的原因相同:

#!/bin/sh
vi file
42G
dd
:wq

具有讽刺意味的是,您可以改为使用 script避免将其作为脚本运行,而是获取终端 session 以与之交互:
server$ mkfifo tun; script -q < tun | netcat -l 4444 > tun

(一些 netcat 在上面的端口之前需要 -p)

此外,您应该禁用本地回显和行缓冲,以便键立即通过连接,而不是在按下 Enter 键时:
client$ stty -icanon -echo; nc localhost 4444

您现在应该可以在 vi 中编辑文件了.

这显然只是一个简洁的概念证明。想要通过网络提供强大的 shell 访问的非 root 用户应该使用 sshd .

关于shell - 通过 netcat session 的 vi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29317933/

相关文章:

java - Unix下执行Maven命令修改文件内容

shell - "netcat -e"执行脚本后重置连接

networking - 在 docker 中使用 netcat 通信两个容器

linux - 如何使用 bash 等到所有服务并行启动?

linux - 如何跳过文件夹中特定模式的文件

linux - 如何在给定目录输入的情况下复制某些文件扩展名?

php - 如何在命令中将参数传递给 linux

regex - vim中如何用一个单词替换连续的相同单词?

linux - 导航多个文件 vi 编辑器

vim - 如何在 vim 中将很长的一行分成每行 64 个字符的小行?