просто сохраните результат команды непосредственно в массиве
для этого потребуется возиться с IFS
], чтобы разделить его только на новые строки
примечание что $ '\ n'
для новой строки может быть чем-то вроде bash
-ism; ymmv w / zsh
OIFS=$IFS IFS=$'\n' netarray=(`airport -s |
awk '$NF=="NONE"{print}' |
cut -c 1-32,51-54 |
sort -r -n -k 1.34,1.36 |
awk '{$NF=""; print}' |
sed -e 's/ $//' `) IFS=$OIFS
например. на основе вашего образца вывода,
$ typeset -p netarray
declare -a netarray='([0]="HP-Print-93-LaserJet 1102" [1]="TPE-Free")'
Ваши правила IPtables конфликтуют. IPtables работает на основе первого совпадения -. Использование опции -A
помещает правило в конец списка, поэтому ваше правило ACCEPT
оказывается в конце.
Таким образом, если вы ввели свои правила в том порядке, в котором вы описали свой пакет, который соответствует этому описанию (tcp-соединение на порту 2001 ), оно будет удалено и не будет касаться ни одного из следующих правил. Это, конечно, если это и ваши единственные правила!
Я понимаю, что эта ссылка довольно старая , однако она предоставляет прекрасную информацию о том, как работает приоритет правил IPtables.
Итак, вы захотите убрать это правило. Сначала нужно определить правило, а затем удалить его.
sudo iptables -L --line-numbers
sudo iptables -D INPUT [The Number of the Drop Rule]
Затем вы можете повторно -добавить правило, как вы делали до использования опции -A
. Теперь ваши IPtables должны работать должным образом.
iptable
правила основаны на «первом совпадении». Таким образом, ваше первое правило отбрасывает все, а второе правило никогда не достигается.
Если вы измените порядок (сначала "принять", а затем "отбросить" ), это сделает то, что вы ожидаете.