从 stderr 中删除行

从 stderr 中删除行

每次我sshscp我想隐藏时都会出现自定义消息。我仍然希望 stderr 的其余部分转到 stderr 输出。

例如:a.sh包含一行:ssh example.com "touch /tmp/a.log ; echo ok"

myuser@host $ ./a.sh
No valid ciphers for protocol version 2 given, using defaults.
#######
# this is prod
#
#######
ok
myuser@host $

所以我想隐藏前 5 行,或者将其放入 scripting 中grep -v -E "#|No valid ciphers for protocol"。任何其他错误仍应输出到 screen/stderr。

答案1

( exec 7>&1; your_command 2>&1 >&7 | grep -v msg_to_suppress >&2 )

也可以看看https://stackoverflow.com/questions/3618078/pipe-only-stderr-through-a-filter

答案2

横幅消息看起来像是在远程服务器上设置的。您应该能够通过以下方式抑制它-q

ssh -q example.com ...

可以通过使用与服务器提供的一组密码相匹配的密码来抑制密码消息。首先ssh -Q cipher尝试设置,例如ssh -o [email protected] ...

相关内容