Как удалить содержание перед образцом в xml, использующем пример unix

Вам нужно добавить маршрутизацию на свой сервер, чтобы ssh-пакеты направлялись через публичный ip сервера, а не через vpn. Если этого не сделать, обратный пакет ssh будет направляться через openvpn. Вот почему вы получаете блокировку сервера после инициализации сеанса клиента openvpn.

Предположим, что ваш сервер:

  • Public IP - a.b.c.d
  • Public IP Subnet - a.b.c.0/24
  • Default Gateway - x.x.x.1
  • eth0 - устройство для шлюза

iproute2 - ваш друг здесь. Сделайте следующее:

ip rule add table 128 from a.b.c.d
ip route add table 128 to a.b.c.0/24 dev eth0
ip route add table 128 default via x.x.x.1

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

Затем запустите конфигурацию клиента openvpn openvpn --config youropenvpn-configfile.ovpn &

Добавлен бонус

Также, если вы хотите ограничить трафик на ваш публичный IP только ssh и только ssh, вам нужно добавить iptables фильтрацию следующим образом:

iptables -A INPUT -d a.b.c.d -p tcp --dport <*ssh port number*> -j ACCEPT
iptables -A INPUT -d a.b.c.d -j DROP

ps: Я помню, что впервые узнал об этом на форуме Linode - погуглите, и вы сможете найти сообщение об этом.

0
03.09.2018, 10:15
2 ответа

Предположим, что ваш XML-документ правильно сформирован, например

<document>
<HDR>
</HDR>
<b>
</b>
<c>
</c>
</document>

Затем вы можете использовать XMLStarlet для удаления всех HDRтегов:

xmlstarlet ed -d '//HDR' file.xml >newfile.xml

Чтобы удалить только те теги HDR, за которыми сразу следует тег b:

xmlstarlet ed -d '//HDR[following-sibling::*[1][name() = "b"]]' file.xml >newfile.xml

XMLStarlet также может использоваться для изменения содержимого тегов:

$ xmlstarlet ed -u '//HDR[following-sibling::*[1][name() = "b"]]' -v 'New header value' file.xml
<?xml version="1.0"?>
<document>
  <HDR>New header value</HDR>
  <b/>
  <c/>
</document>

$ xmlstarlet ed -i '//HDR[following-sibling::*[1][name() = "b"]]' -t attr -n 'new_attribute' -v 'hello' file.xml
<?xml version="1.0"?>
<document>
  <HDR new_attribute="hello"/>
  <b/>
  <c/>
</document>
5
28.01.2020, 02:14

Тип 1:

 echo "<HDR></HDR><b></b><c></c>" | sed 's/^.*<b>/<b>/' 
 <b></b><c></c>
  • заменит все до <b>на<b>

Тип 2:

sed  -n '/<b>/,$p' file
<b>
</b>
<c>
</c>
  • напечатает первое вхождение <b>в конец файла ($ ).
1
28.01.2020, 02:14

Теги

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