看来这个问题需要一些解释。
当前,我编写了一个 ssh 包装器 bash 函数,用于启动或恢复远程主机上的 tmux 会话。
它的存在对用户来说是完全透明的,您只需键入ssh host
,因为function ssh() { ... }
在您的内部定义了.bash_profile
this 将被执行而不是真正的 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 函数内部解决这个问题?