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

在Bash环境下的Telnet终端中实现多行粘贴时添加行间延迟的方法

在Bash环境下的Telnet终端中实现多行粘贴时添加行间延迟的方法

刚好遇到过类似的困扰,给你几个实用的解决办法,亲测能解决固件处理慢导致的粘贴丢命令问题:

方法一:用Expect脚本(最靠谱的交互式处理方案)

Expect专门用来处理像Telnet这种交互式命令行场景,能精确控制命令发送的时机和延迟。

  1. 先创建一个脚本文件,比如telnet_cmds.exp,内容如下:
#!/usr/bin/expect

# 替换成你的设备IP和端口
spawn telnet 192.168.1.1 23

# 下面的匹配字符串要根据你的固件登录提示调整,比如有的是"Username:"或者直接进入命令行
expect "login:"
send "admin\r"
expect "Password:"
send "123456\r"

# 逐个发送命令,每个命令后加1秒延迟(可根据固件速度调整数值)
send "show status\r"
sleep 1
send "config network\r"
sleep 1
send "save config\r"
sleep 1

# 保持会话让你继续操作,不需要的话可以换成exit
interact
  1. 给脚本添加执行权限:
chmod +x telnet_cmds.exp
  1. 运行脚本:
./telnet_cmds.exp

这个方法的好处是完全不需要手动粘贴,脚本自动完成所有步骤,延迟时间也能精准控制。

方法二:用Bash循环+延迟读取命令文件

如果不想用Expect,也可以把要执行的命令存成文件,用Bash循环逐个发送,中间加延迟。

  1. 先创建一个命令文件cmds.txt,每行一个命令:
show status
config network
save config
  1. 写一个Bash脚本telnet_with_delay.sh:
#!/bin/bash

# 替换成你的设备IP和端口
telnet 192.168.1.1 23 << EOF
$(while read -r cmd; do
    echo "$cmd"
    sleep 1  # 延迟1秒,按需调整
done < cmds.txt)
EOF
  1. 同样给脚本加执行权限后运行:
chmod +x telnet_with_delay.sh
./telnet_with_delay.sh

注意:如果Telnet会话提前退出,可能需要调整延迟时间,或者在脚本里加上等待登录的逻辑(不过这部分还是Expect更擅长)。

方法三:调整终端的输入延迟(临时生效)

如果还是想手动粘贴,可以在Telnet会话里调整终端的输入规范,让系统自动给每行命令加延迟:

进入Telnet会话后,先输入这个命令:

stty icanon 1 10

这里的10代表等待1秒(因为stty的time参数是十分之一秒为单位),你可以根据实际情况改成5(0.5秒)或者20(2秒)。设置后再粘贴多行命令,终端会自动在每行之间等待指定的时间。
不过这个方法的兼容性可能差点,有的终端或者固件可能不支持,你可以试试。

备注:内容来源于stack exchange,提问作者ysap

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 12:08:07