我会尝试尽可能地解释这个问题。我一直在开发一个iPhone项目,利用autossh在启动时转发端口并维护它。问题是当启用/禁用移动/ wifi连接时,autossh不会切换到活动接口。
实施例: 我启动了具有3G数据连接的autossh然后打开wifi,但autossh继续使用3G数据连接。然后我关闭3G并且bam autossh甚至在重新打开3G之后也无法连接...同样适用于wifi ...启用wifi启用并连接启动,然后打开3G并禁用/丢失wifi连接autossh将无法再次连接。
所以我基本上需要做的是每当接口切换时重启autossh,但每次切换只有一次,如果这是有道理的,那么它不会一遍又一遍地杀死。
我想出了一行代码但是还不够好
if [[ $(ifconfig pdp_ip0 |grep inet) && ! $(ifconfig en0 |grep inet) ]]; then
echo true
else
echo false
if [[ ! $(ifconfig pdp_ip0 |grep inet) && $(ifconfig en0 | grep inet ]]; then
echo true
else
echo false
一个循环可能会这样做但是每个真实条件需要杀死一次&需要等到它的假,然后再次真实。上帝这很难解释。