是否可以通过 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/