'ssh -R' 无法在 /etc/rc.local 中运行

'ssh -R' 无法在 /etc/rc.local 中运行

我在中写了以下命令/etc/rc.local

ssh -R 32400:192.168.0.100:32400 [email protected] -N

但它无法启动。

知道为什么吗?

答案1

rc.local执行时可能网络还没准备好。

以下代码将在连接之前等待网络:

(
until ping -nq -c3 W.X.Y.Z; do
   # Waiting for network
   sleep 5
done
ssh -R 32400:192.168.0.100:32400 [email protected] -N
)&

W.X.Y.Z是可访问并响应 ping 的 IP 地址。它可能是您网络的默认网关、Google DNS (8.8.8.8) 等。

括号内的代码在新的 shell 中运行,并&使它在后台运行。它不会阻止 的执行rc.local

until和之间的命令done将会重复,直到ping成功,即得到答复(即网络已启动)。

相关内容