You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中伪造光标位置以响应\033[6n ANSI代码?

伪造终端光标位置响应(SSH场景)

要伪造终端对\033[6n查询的响应,你可以通过拦截SSH会话中的交互数据,替换默认的光标位置响应。以下是几种可行的方案:

方法一:使用Expect脚本拦截查询并返回自定义坐标

Expect可以自动处理交互式SSH会话,捕获服务器发送的\033[6n查询指令,然后返回你指定的坐标响应。

创建一个名为fake_cursor.exp的脚本:

#!/usr/bin/expect

# 替换成你要伪造的行号和列号
set fake_row 1000
set fake_col 2000

# 启动SSH会话,替换为你的服务器地址和用户名
spawn ssh user@your-server

# 捕获服务器发送的\033[6n查询,返回自定义响应
expect {
    "\033\[6n" {
        send "\033\[${fake_row};${fake_col}R"
        exp_continue
    }
    eof
}

赋予脚本执行权限:

chmod +x fake_cursor.exp

运行脚本即可启动带伪造光标响应的SSH会话:

./fake_cursor.exp

方法二:用Socat和Shell脚本包装SSH会话

通过Socat建立双向管道,拦截服务器的输出,实时替换\033[6n查询的响应。

创建一个bash脚本fake_cursor.sh:

#!/bin/bash

# 自定义坐标
FAKE_ROW=1000
FAKE_COL=2000

# 替换为你的SSH命令
SSH_CMD="ssh user@your-server"

# 使用socat拦截数据,替换响应
socat - EXEC:"$SSH_CMD",pty,stderr,setsid,sigint,sane 2>&1 | \
sed -u "s/\x1b\[6n/\x1b\[${FAKE_ROW};${FAKE_COL}R/g"

赋予执行权限后运行:

chmod +x fake_cursor.sh
./fake_cursor.sh

注意事项

  • 确保系统已安装expect或socat,可通过包管理器安装(如apt install expect socat)
  • 自定义坐标需为正整数,无数值上限(只要服务器能处理)
  • 两种方案都会自动拦截服务器的多次光标查询,并持续返回自定义响应

内容的提问来源于stack exchange,提问作者Aditya Prakash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:56:02