Вот пример, просто используя awk
:
#!/bin/bash
for id in $(awk '/"id":/ {sub(/,/, ""); print $2}' inputfile.json); do
curl -X POST ...
done
В Linux вы можете настроить правила маршрутизации с помощью команд ip rule
и ip route
. Последний является более продвинутым эквивалентом команды route
.
В вашем случае вы можете получить желаемое поведение, создав отдельную таблицу маршрутизации, в которой шлюз по умолчанию на интерфейсе wlan0
является единственным (или в любом случае предпочтительным )шлюзом по умолчанию, а затем установите правило маршрутизации, указывающее что весь трафик, поступающий с интерфейса tun0
, должен использовать эту отдельную таблицу маршрутизации.
Это можно получить, например, с помощью следующих двух команд:
ip route add default via 192.168.222.1 table 100 # <-- 100 is an arbitrary number for the separate routing table
ip rule add iif tun0 table 100
, а чтобы очистить их, используйте:
ip rule del iif tun0 table 100
ip route flush table 100
Вы можете протестировать команды в реальном времени после установки VPN и убедиться, что все работает, как задумано.
Затем вы можете захотеть, чтобы эти команды (или их лучший эквивалент для вашей общей настройки )выполнялись с помощью openvpn
при необходимости. Самый простой способ сделать это — поместить эти команды в два скрипта (соответственно ), а затем вызвать их через хуки OpenVPN route-up
и route-pre-down
.
В зависимости от того, как вы на самом деле используете OpenVPN,вам нужно либо запустить openvpn
, указав --route-up script-that-adjusts-routing.sh
и--route-pre-down script-that-undoes-routing.sh
(и, возможно, также--script-security 2
)из командной строки, либо добавить эти конфигурации в файл OpenVPN .conf
вашего туннеля.
Если у вас уже есть сценарии route-up
и route-pre-down
, вам нужно вместо этого добавить корректирующие команды в существующие сценарии, предшествующие -, и это может потребовать дополнительных усилий в зависимости от того, что делают эти сценарии.