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

如何在Expect脚本中禁用/阻止终端自动换行?

解决Expect SSH连接路由器时的自动换行问题

以下几种方法可以解决终端宽度导致返回数据被自动拆分的问题:

  • 设置超大终端列宽
    在登录路由器后,发送stty cols 1000 rows 1000命令,强制告知设备当前终端的列宽足够容纳长数据,不会触发自动换行。示例脚本片段:

    spawn ssh admin@router-ip
    expect "Password:"
    send "your-password\r"
    expect "Router>"
    send "stty cols 2000\r"
    # 之后执行需要获取数据的命令
    send "your-command\r"
    

    列宽数值可以按需调整,只要超过你预期的最长输出长度即可。

  • 使用dumb终端类型
    dumb是一种不支持自动换行、光标移动等高级功能的终端类型,路由器识别到后不会主动给输出内容加换行符。你可以在spawn时直接指定环境变量:

    spawn env TERM=dumb ssh admin@router-ip
    

    或者在脚本开头先设置环境变量:

    set env(TERM) "dumb"
    spawn ssh admin@router-ip
    
  • 调用路由器自带的终端配置命令
    多数路由器提供了关闭自动换行的内置命令,比如terminal width 0(0代表无宽度限制)、no terminal length等。登录后先执行这类命令,后续输出就不会被自动拆分:

    expect "Router>"
    send "terminal width 0\r"
    

内容的提问来源于stack exchange,提问作者Graham Leggett

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:12:47