удалите строки, где значение поля меньше чем или равно 3 - sed или awk?

Примечание: Это предполагает, что Вы имеете нормальные сети, работающие на двух сайтах, и хотите туннель между ними.

Выполненный ifconfig -a inet на каждой из машин конечной точки. Необходимо видеть IP-адреса всех интерфейсов наряду с некоторой другой информацией.

Подобный этому на моем местном конце:

lan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 
    options=3<RXCSUM,TXCSUM>
    inet 192.168.0.1 netmask 0xffffffc0 broadcast 192.168.0.254
wan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=3<RXCSUM,TXCSUM>
    inet 192.0.2.163 netmask 0xffffff00 broadcast 255.255.255.255

Так мой internal IP 192.168.0.1, и external 192.0.2.163.

На удаленном конце моего соединения я делаю ту же команду и вижу:

lan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 
    options=3<RXCSUM,TXCSUM>
    inet 192.168.4.1 netmask 0xffffffc0 broadcast 192.168.4.254
wan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=3<RXCSUM,TXCSUM>
    inet 198.51.100.44 netmask 0xffffff00 broadcast 255.255.255.255

Так удаленный конец internal 192.168.4.1 и external 198.51.100.44.

На моем местном конце я работал бы:

ifconfig gif0 create 192.168.0.1 192.168.4.1
ifconfig gif0 tunnel 192.0.2.163 198.51.100.44

На удаленном конце я работал бы

ifconfig gif0 create 192.168.4.1 192.168.0.1
ifconfig gif0 tunnel 198.51.100.44 192.0.2.163

Эта конфигурация является только временной, после того как Вы перезагружаете машины, конфигурация будет потеряна. Для создания этой конфигурации постоянной я открылся бы /etc/rc.conf в моем любимом редакторе и добавляют следующее:

На моем местном конце:

network_interfaces="auto"
gif_interfaces="gif0"
gifconfig_gif0="192.0.2.163 198.51.100.44"
ifconfig_gif0"="inet 192.168.0.1/30 192.168.4.1"

На моем удаленном конце:

network_interfaces="auto"
gif_interfaces="gif0"
gifconfig_gif0="198.51.100.44 192.0.2.163"
ifconfig_gif0"="inet 192.168.4.1/30 192.168.0.1"

Больше примечаний:

  1. Это не устанавливает маршрутизацию. Этот компьютер двух будет знать, как говорить друг с другом и ничем иным. Если Вы хотите направить, необходимо будет настроить статические маршруты или настроить демона маршрутизации как routed (демон RIP, встроенный в FreeBSD).
  2. Это не устанавливает шифрование. Это - только сам туннель. Если бы Вы хотите шифрование, необходимо будет установить IPSec, и я настоятельно рекомендовал бы использование ipsec-tools порт безопасности; который включает racoon, демон IKE.
  3. В то время как технически возможно выполнить туннель через брандмауэр NAT, я настоятельно рекомендую предотвращение это. Это будет намного больше проблемы, чем это стоит. Другое примечание по NAT, если Вы используете один из брандмауэров FreeBSD, можно избежать, что NAT, таким образом, это не проблема. Кроме того, необходимо открыть определенные порты и протоколы, если Вам позволили Вашему брандмауэру делать вышеупомянутую работу.
18
04.03.2015, 12:18
1 ответ

У тебя почти получилось.

 awk '(NR>1) && ($8 > 2 ) ' foo > bar

где

  • NR - номер записи (то есть номер строки)
  • $8 - восемь полей
  • && - логично и
  • foo - исходный файл, без изменений
  • bar - результирующий файл
  • неявное действие по умолчанию - вывести текущую входную строку

Обратите внимание, что заголовок полосами от foo до bar, сохранить его

 awk '(NR==1) || ($8 > 2 ) ' foo > bar

где

  • || логическая или
  • входная строка выводится, если NR==1 или если $8 > 2

Обновление #1

Для указания диапазона

  • ( ($8 >= -). 4) && ( $8 <= 4) ) 8-е поле от -4 до 4
  • (NR == 1) || ( ($8 >= -4) && ( $8 <= 4) ) то же самое, включая заголовок
20
27.01.2020, 19:46

Теги

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