То, что вы описываете, является результатом того, что сетевой адаптер виртуальной машины находится в режиме «NAT»; в этом режиме ваш хост-компьютер действует как маршрутизатор для вашей виртуальной машины.
Если вы хотите, чтобы ваша виртуальная машина находилась в той же IP-подсети, что и хост-компьютер, интерфейс должен быть установлен в «мостовой» режим; это позволяет беспрепятственно передавать сетевой трафик между виртуальной машиной и другими устройствами в физической сети.
Одним из подходов может быть установка инструмента GNU timeout
черезbrew
:
$ brew install coreutils
Вы можете видеть, что timeout
является частью этого пакета:
$ brew list coreutils | grep timeout
/usr/local/Cellar/coreutils/8.29/bin/gtimeout
/usr/local/Cellar/coreutils/8.29/libexec/gnubin/timeout
/usr/local/Cellar/coreutils/8.29/libexec/gnuman/man1/timeout.1
/usr/local/Cellar/coreutils/8.29/share/man/man1/gtimeout.1
А потом сделай так:
$ gtimeout 3 networksetup....
Здесь я делаю еще пару вещей. Я использую time
, чтобы показать, что команда завершилась всего через 3 секунды, я защищаю команду с помощью -k5
, который отправит SIGTERM
команде, если она пройдет более 5 секунд.
$ time gtimeout -k5 3 sleep 10
real 0m3.005s
user 0m0.002s
sys 0m0.003s