似乎这个问题需要一些解释。
当前我写了一个ssh包装器bash函数,它正在远程主机上启动或恢复tmux会话。
它的存在对用户完全透明,您只需键入ssh host
,并且因为function ssh() { ... }
在.bash_profile
内定义,这将被执行而不是真正的ssh。
现在,我确实遇到了这个问题,在一小部分主机上,他们没有真正的shell,并且他们有一个伪shell,如果接收到它不理解的命令,则会丢弃ssh连接。示例:NetScaler,Synology(使用ash
),CISCO路由器,......
我想要做的是在ssh()包装器中嵌入一些登录,这样它就会在这些机器上停止失败。最初我制作了一个黑名单,但很快就变得难以管理,我需要一个适当的解决方案。
ssh host.example.com
X11 forwarding request failed on channel 0
ash: darwin: unknown operand
ash: md5sum: not found
ash: syntax error: 0x
Connection to host.example.com closed.
>$ echo $?
0
如何从bash函数中解决这个问题?