Клавиатура PS2 в OpenBSD 6.4

Вот как бы я это сделал. Во-первых, для простоты, давайте перечислим каждую из цепочек по отдельности, поскольку я предполагаю, что вы хотите знать, к какой цепочке принадлежит правило:

$ iptables -L INPUT --line-numbers

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     udp  --  109.224.241.0/24     0.0.0.0/0            udp dpt:5060
2    ACCEPT     udp  --  109.224.241.0/24     0.0.0.0/0            udp dpt:4569
3    ACCEPT     udp  --  217.14.138.0/24      0.0.0.0/0            udp dpt:5060
4    ACCEPT     udp  --  217.14.138.0/24      0.0.0.0/0            udp dpt:4569
5    ACCEPT     udp  --  172.30.33.0/24       0.0.0.0/0            udp dpt:5060
6    ACCEPT     udp  --  172.30.33.0/24       0.0.0.0/0            udp dpt:4569
7    ACCEPT     udp  --  212.11.91.0/24       0.0.0.0/0            udp dpt:5060
8    ACCEPT     udp  --  212.11.91.0/24       0.0.0.0/0            udp dpt:4569
9    ACCEPT     udp  --  212.11.64.0/19       0.0.0.0/0            udp dpt:5060
10   ACCEPT     udp  --  212.11.64.0/19       0.0.0.0/0            udp dpt:4569
11   ACCEPT     udp  --  77.240.48.0/20       0.0.0.0/0            udp dpt:5060
12   ACCEPT     udp  --  77.240.48.0/20       0.0.0.0/0            udp dpt:4569
13   LOG        udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:4569 LOG flags 0 level 4 prefix "AsteriskHack:"
14   DROP       udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:4569
15   LOG        udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:5060 LOG flags 0 level 4 prefix "AsteriskHack:"
16   DROP       udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:5060

Вы можете получить список имен цепочек следующим образом:

CHAINS="$(iptables -L | awk '/Chain /{print $2}')"

Теперь давайте воспользуемся несколько уловок, чтобы просто поместить их в массив:

# We can just define the array from the contents of our command
# output, using \r or \n as a field separator.
# We use grep to ignore lines that don't start with a number.
IFS=$'\r\n' GLOBIGNORE='*' command eval 'INPUT_RULES=($(iptables -L INPUT --line-numbers | grep '^[0-9]'))'

В Bash 4 вы также можете использовать mapfile builtin :

IFS=$'\r\n' mapfile INPUT_RULES < <(iptables -L INPUT --line-numbers | grep '^[0-9]')

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

Если вы не хотите использовать grep , но все же хотите исключить первые две строки из массива, вы можете просто отключить первые два элемента постфактум, например:

array=("${array[@]:2}")

Также обратите внимание, что в вашем исходном примере:

echo "${array[@]}"

поместит все в одну строку, независимо от того, находятся ли они в отдельных ключах массива или нет. Лучшим способом точного просмотра массива с одним элементом в строке было бы следующее:

for rule in "${array[@]}"; do echo LINE: "$rule"; done

0
06.04.2019, 21:05
1 ответ

Устройство /dev/wskbd0должно существовать в системе OpenBSD 6.4. Если этого не происходит, это признак неудачного или неполного обновления или установки. (Создание устройств обычно является последним шагом в установке или обновлении и выполняется автоматически, если вы устанавливаете/обновляете, загружая bsd.rdядро ​​), либо вы удалили некоторые файлы устройства вручную.

Чтобы воссоздать устройства по умолчанию, используйте

cd /dev && doas./MAKEDEV all

Затем сценарий /dev/MAKEDEVвоссоздаст файлы устройств, которые должны существовать в любой системе OpenBSD 6.4, включая файл /dev/wskbd0.

0
28.01.2020, 03:51

Теги

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