抑制 bash 中 telnet 的输出

Posted

技术标签:

【中文标题】抑制 bash 中 telnet 的输出【英文标题】:surpress output of telnet in bash 【发布时间】:2013-01-07 05:24:56 【问题描述】:

我正在通过 bash 脚本远程登录到一台机器。一切正常,只是 telnet 会话的输出显示在屏幕上。我想知道如何抑制这种情况。我似乎找不到合适的位置来输入/dev/null

我不想运行script.sh > /dev/null,因为我需要查看它的其他输出。

expect <<EOF
set timeout 20
spawn telnet 0.0.0.0
match_max 100000
expect -exact "Trying 0.0.0.0...\r
Connected to 0.0.0.0.\r
Escape character is '^\]'.\r
\r
User name: "
send -- "user\r"
expect -exact "user\r
\r
Password: "
send -- "pass\r"
expect -exact "pass\r
send -- "commands"
send -- "exit\r"
EOF

【问题讨论】:

【参考方案1】:

根据expect 手册页,log_user 0 命令可用于禁用记录到标准输出。这不会将日志记录更改为日志文件。同样,log_user 1 可用于重新启用标准输出日志记录。

【讨论】:

【参考方案2】:

您可以使用 netcat (nc) 代替 telnetNetcat 没有 telnet 显示的额外输出。

【讨论】:

但是我不是必须为nc使用额外的文件吗? @Lurch No. nc 可以用作 telnet 的替代品。试一试。 我得到 spawn nc 0.0.0.0 23 ÿûÿû 用户名: @Lurch 首先在expect 之外尝试nc,以确保您了解它在做什么。只需在命令行上尝试一下。

以上是关于抑制 bash 中 telnet 的输出的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 ERR 陷阱中退出 0 时 bash 会抑制标准输出?

如何使用 Bash 抑制命令的所有输出?

如何从 bash 获取 telnet 命令的输出?

反弹shell小结

如何在 bash 中抑制 npm WARN 已弃用的消息

如何在 bash 脚本中正确使用 telnet?