Как удалить «неразрешимые» строки в Vi?

Я СИЛЬНО подозреваю, что вам вообще не следует запускать скрипт для обновления вашего скрипта. Вместо этого вы должны просто вызвать awk из исходного сценария и получить таким образом нужные вам данные. Затем saker.txt можно было бы просто использовать как файл конфигурации (который и есть) для изменения поведения вашего скрипта (вместо того, чтобы использовать его для изменения вывода вашего скрипта создания скрипта).

Очевидно, у меня очень ограниченные данные о вашем скрипте, но похоже, что вы используете saker.txt в качестве таблицы поиска для установки переменной в вашем скрипте.

В частности, фрагмент сценария:

if [ "$STATUS" == "1923.12.312." ]
then
vem="Nikl"
fi
if [ "$STATUS" == "12391.123.123" ]
then
vem="Jo"
fi
if [ "$STATUS" == "12398123.123912" ]
then
vem="Ad"
fi

может быть функционально воспроизведен с помощью встроенного сценария awk следующим образом:

vem=$( awk -v status="$STATUS" '$1 == status { printf "%s", $2 ; exit }' saker.txt )

Это отвечает: «Как я могу установить переменную в bash на основе поиска другой переменной значение в файле? " Кажется, именно этого вы и пытаетесь достичь, запустив свой скрипт для обновления вашего скрипта.

Конечно, есть предостережения, например: «Что, если значение $ STATUS вообще не указано в saker.txt ?» "Что, если он будет указан дважды?" "Как я могу установить значение по умолчанию для vem ?" Но у вас все еще есть все эти предостережения, и даже более того, со сценарием обновления сценария.


РЕДАКТИРОВАТЬ: Если вы хотите разрешить пробелы в значении vem , как указано в saker.txt , вам лучше использовать что-нибудь другое для разделителя, например табуляцию:

$ cat saker.txt
1923.12.312.    Nikl
12391.123.123   Jo
12398123.123912 Ad

Затем используйте следующую версию однострочника awk :

vem=$( awk -Ft -v status="$STATUS" '$1 == status { printf "%s", $2 ; exit }' saker.txt )

Предупреждение о разделители табуляции: убедитесь, что вы не используете более одной табуляции. В отличие от обработки по умолчанию в awk «разделенных пробелами», когда вы явно устанавливаете разделитель только как TAB, каждая вкладка считается разделителем независимо от того, есть ли текст между вкладки. Итак, 10000 Джон будет рассматриваться как ТРИ поля: «10000», «» (пустое поле) и «Джон».

1
19.07.2018, 22:51
1 ответ

Это очень простая вещь для работы в сети. :Если вы хотите соединить разные сегменты локальной сети, вам понадобится маршрутизатор . Вам не нужен NAT, вам не нужен iptables, вы просто маршрутизируете, просто и понятно.

По какой-то причине люди думают, что для маршрутизации нужен как минимум NAT или iptables, и в Интернете полно советов на этот счет. Это на самом деле не нужно, и моя любимая мозоль.

Все, что вам нужно сделать, это

1 )Включить переадресацию на сервер #2. Это уже было описано (добавить файл в /etc/sysctl.d/, перезагрузиться и посмотреть, отображается ли cat /proc/sys/net/ipv4/ip_forward1, или включить его напрямую с помощью echo 1 > /proc/sys/net/ipv4/ip_forward).

2)Установите маршрут для всех хостов, которые хотят использовать шлюз . Это то, что большинство людей забывают. Итак, на сервере #1,вам нужно что-то вроде

ip route add 10.8.0.0/24 dev enp0s17 via 192.168.56.120
ip route add 10.0.4.0/24 dev enp0s17 via 192.168.56.120

и то же самое на всех других хостах в LAN A и B, которые хотят получить доступ к LAN C и D. На сервере #3 (и всех других хостах, к которым он относится ), вам нужно

ip route add 192.168.56.0/24 dev tun0 via 10.8.0.1

Это говорит каждому хосту, что когда он хочет получить доступ к удаленной локальной сети, он должен пройти через сервер #2 с соответствующим IP-адресом сервера #2 в локальной локальной сети.

Вы можете проверить, что маршрутизация работает с ip route get a.b.c.dна сервере #1 и сервере #3. Теперь проверьте с помощью ping. Если что-то по-прежнему не так, выполните отладку с помощью tcpdump. Если на пути стоит брандмауэр, отключите его при необходимости.

Когда все заработает, используйте какой-либо способ сделать маршруты постоянными, например, распределите их по DHCP или добавьте в подходящий файл конфигурации.

4
27.01.2020, 23:12

Теги

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