Две сети на одном компьютере — Ubuntu

En los shells POSIX, .es un componente especial, por lo que su falla hace que el shell salga (en algunos shells como bash, solo se hace cuando está en modo POSIX ).

Lo que se considera un error depende del shell. No todos salen cuando se produce un error de sintaxis al analizar el archivo, pero la mayoría sale cuando no se puede encontrar o abrir el archivo de origen. No sé de ninguno que saldría si el último comando en el archivo de origen regresara con un estado de salida no -cero (a menos que la opción errexitesté activada, por supuesto ).

Aquí haciendo:

[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

Es un caso en el que desea buscar el archivo si está allí, y no lo hace si no está (o está vacío aquí con-s).

Es decir, no debe considerarse un error (error fatal en shells POSIX )si el archivo no está allí, ese archivo se considera un archivo opcional.

Todavía sería un (error fatal )si el archivo no fuera legible o fuera un directorio o (en algunos shells )si hubiera un error de sintaxis al analizarlo, lo que sería un error real condiciones que deben ser reportadas.

Algunos dirían que hay una condición de carrera. Pero lo único que significa sería que el shell saldría con un error si el archivo se elimina entre [y ., pero diría que es válido considerar que este archivo de ruta fija es un error. desaparecer repentinamente mientras se ejecuta el script.

Por otro lado,

command. "$NVM_DIR/nvm.sh" 2> /dev/null

donde command¹ elimina el atributo especial del comando .(para que no salga del shell en caso de error )no funcionaría como:

  • ocultaría los errores de .pero también los errores de los comandos ejecutados en el archivo fuente
  • también ocultaría condiciones de error reales, como que el archivo tenga los permisos incorrectos.

Otras sintaxis comunes (consulte, por ejemplo, grep -r /etc/default /etc/init*en los sistemas Debian para los scripts de inicio que aún no se han convertido a systemd(donde EnvironmentFile=-/etc/default/servicese usa para especificar un archivo de entorno opcional en su lugar ))incluyen:

  • [ -e "$file" ] &&. "$file"

    Verifique que el archivo esté allí, aún así búsquelo si está vacío. Sigue siendo un error fatal si no se puede abrir (aunque esté allí, o estuvo allí ). Puede ver más variantes como[ -f "$file" ](existe y es un regular archivo ),[ -r "$file" ](es legible ), o combinaciones de ellas.

  • [ ! -e "$file" ] ||. "$file"

    Una versión ligeramente mejor. Deja más claro que el archivo que no existe es un caso OK. Eso también significa que $?reflejará el estado de salida del último comando ejecutado en$file(en el caso anterior, si obtiene 1, no sabe si es porque $fileno existía o si ese comando falló ).

  • command. "$file"

    Espere que el archivo esté allí, pero no salga si no se puede interpretar.

  • [ ! -e "$file" ] || command. "$file"

    Combinación de lo anterior :está bien si el archivo no está allí, y para shells POSIX, se informan fallas al abrir (o analizar )el archivo pero no son fatales (que pueden ser más deseable para~/.profile).


¹ Nota :Sin embargo, en zshno puede usar commandde esa manera a menos que esté en la emulación sh; tenga en cuenta que en el shell Korn, sourcees en realidad un alias para command., una variante especial no -de.

2
23.07.2019, 07:08
1 ответ

Это легко выполнимо.

Узнайте, поддерживает ли ваше устройство кодирования видео протокол DHCP или имеет предопределенный статический адрес.

Если он принимает DHCP, установите пакет DHCP-сервера на свой компьютер с Ubuntu, настройте его для eth0.

В противном случае настройте статический адрес для eth0, который находится в той же подсети, что и статический IP-адрес устройства кодирования видео. Убедитесь, что эта подсеть отличается от подсети, которую вы используете на своем маршрутизаторе; re -при необходимости настройте устройство кодирования видео или маршрутизатор.

Настройте свой компьютер с Ubuntu так, чтобы в противном случае оставить eth0в покое и «подключаться к Интернету» только с eth1.

Убедитесь, что переадресация отключена на вашем компьютере с Ubuntu.(cat /proc/sys/net/ipv4/ip_forwardдолжен дать вам0).

Подробная информация о том, как выполнить каждый из этих шагов, зависит от того, какой именно ваш компьютер с Ubuntu использует (systemd? сетевой менеджер? ), возможно, вам придется прочитать документацию по ним или поискать в Интернете.

0
27.01.2020, 22:24

Теги

Похожие вопросы