首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用tcl/expect准备隧道

使用tcl/expect准备隧道
EN

Stack Overflow用户
提问于 2020-12-20 22:47:18
回答 1查看 154关注 0票数 0

作为更大计划的一部分(跳过一串跳,然后在禁用PortForwarding的设置中创建到mongodb的端口隧道),我尝试创建一个tcl/expect脚本来验证是否可以中继tcl/expect准备的流。

这是我的实验:

代码语言:javascript
复制
# terminal 1 [listen to 2000]
nc -l 2000

# terminal 2 [listen to 200 then connect it to 2000 using expect]
socat tcp-l:200 system:'./nc-test.exp'

# terminal 3 [connect to 200]
nc localhost 200

以及我的tcl/expect简单脚本(nc-test.exp):

代码语言:javascript
复制
#!/usr/local/bin/expect

log_user 0
spawn nc localhost 2000
stty raw -echo
interact -o -nobuffer

现在的问题是,我用terminal 3编写的所有东西都会回显给我自己。奇怪的是,当我将socat直接连接到nc localhost 2000或直接执行tcl/expect脚本时,这种情况不会发生。你能帮我想想吗

  • 是什么导致了不想要的回声?
  • 是我更大的计划可行吗?(我主要担心的是保持流的原始)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-22 09:35:38

stty脚本中的expect命令是在/dev/tty上运行的,这可能是终端2中的tty。然而,spawn创建了另一个pty来与它启动的命令进行对话。该tty将从当前的tty继承,即终端2,因此将具有回显。只需将stty raw -echo行移到产卵之前就足够了,或者更明确地说,您可以通过命令设置stty设置,如

代码语言:javascript
复制
set stty_init "raw -echo"

spawn之前。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65385584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档