Bash – 知道SSH隧道是否被正确创build

这是情况

我有我的电脑,命名为MY_COMPUTER一台名为MY_COMPUTER的机器上,我有一个用户remoteuser ,在/etc/passwd shell /bin/false

这个用户只有一个function,做一个SSH隧道后能够做一个反向的SSH。

我目前使用的命令是

 ssh \ -nNT \ -R 42242:127.0.0.1:22 \ remoteuser@REMOTE_VM 

我希望这个命令在脚本中执行,并有一个方法来获得callback或方式(比如把这个ssh命令放在后台,定期检查一个套接字文件或类似的东西)来检查该连接实际上是打开的,而不是在networking缓慢的情况下简单地等待连接。

openssh-client是否有这样的方法,或者你必须使用ssh客户端的自定义实现,以便你可以把你的callback放在任何地方?

我宁愿尽可能多的(甚至肮脏的)解决scheme与纯openssh客户端和bash

捕获输出,然后测试输出是否表明会话已经建立? 沿着:

 TMPFILE=$(mktemp) 2>"$TMPFILE" ssh -v -nNT -R 42242:127.0.0.1:22 remoteuser@REMOTE_VM & grep 'debug1: Entering interactive session.' "$TMPFILE" 

或者,也许你可以轮询netstat的输出。