Команда, которая активирует только VPN в моем текущем терминале.

Если вы хотите, чтобы ваша valueпеременная была 00, не объявляйте ее как целое число в bash. Объявление его как целого числа с declare -iпредложит оболочке оценить его как целое число, а целочисленное значение 00равно нулю.

Обратите внимание, следующий код выведетnot same:

declare -i value='00'
optics_status='00'

if [ "$optics_status" = "$value" ]; then
   echo 'same'
else
   echo 'not same'
fi

Изменение declare -i value='00'на value='00'приведет к выводу same.

Также обратите внимание на цитирование расширений переменных выше.


Конечно, вы могли бы также рассмотреть преобразование значений обеих переменных в целые числа, сравнив их с помощью

if [ "$optics_status" -ne "$value" ]; then

или

if (( optics_status != value )); then

но это предполагает, что вы знаете, что $optics_valueэто всегда будет строкой, которая может быть преобразована в целое (и десятичное целое число, а не восьмеричное целое тоже ).

0
01.01.2020, 12:58
2 ответа

Вы не можете «указать терминалу 2 использовать VPN-подключение для всех будущих команд».

Тем не менее, вы можете создать новое сетевое пространство имен , запустить VPN в этом пространстве имен или переместить сетевой интерфейс VPN в это пространство имен (, возможно, после подключения его подходящим образом к основной сети. пространство имен и/или ваш физический сетевой интерфейс ), затем запустите новое окно терминала в этом пространстве имен сети, и все команды будут использовать VPN по соединению (и только VPN-соединение ).

Google предлагает множество руководств по сетевым пространствам имен. Основная команда, которая вам понадобится, это ip netns. Вам также потребуется достаточное понимание основ работы в сети, чтобы подключить сетевое пространство имен.

И да, vpnnsработает очень похожим образом.

3
28.01.2020, 02:17

Ответ на ваш вопрос уже был дан на StackExchange:Привязать программу unix к определенному сетевому интерфейсу . Я считаю, что решение с использованием App -Route -Jail решит эту проблему за вас. Я считаю, что вы не можете точно привязать окно терминала к VPN, но вы можете заставить программу использовать определенный сетевой интерфейс при выполнении.

Если это вам поможет, вы можете создать сценарий оболочки для youtube -dl с правильными аргументами команды, чтобы заставить его использовать VPN, и использовать этот сценарий оболочки в терминале 2 для использования с VPN.

Пример такого сценария оболочки (требует оболочки POSIX, например, Bash)

#!/bin/bash
MARK=10 LD_PRELOAD=./mark.so /path/to/youtube-dl "$@"

Обратите внимание, что для этого вам потребуются два исполняемых файла, один из которых всегда будет работать через обычную сеть, а другой — через VPN.

3
28.01.2020, 02:17

Теги

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