Ваша опция -n
принимает аргумент, поэтому вам нужно getopts 'n:' arg
.
Аргумент option можно найти в $OPTARG
.
Не трогайте OPTIND
в цикле while getopts
.
После цикла shift "$(( OPTIND - 1 ))"
. Это оставляет имена файлов в позиционных параметрах.
То есть,
#!/bin/sh
level=5
while getopts 'n:' arg; do
case $arg in
n) level=$OPTARG ;;
*) echo 'Error in command line parsing' >&2
esac
done
shift "$(( OPTIND - 1 ))"
for name do
# stuff
done
Далее, вы никогда не обрабатываете случай отсутствия входных файлов.
Следующее заставит сценарий использовать стандартный ввод в качестве имени файла, если он не указан:
if [ "$#" -eq 0 ]; then
# handle no filenames, for example:
set -- /dev/stdin
fi
for name do
# stuff
done
Остальное я оставлю вам (, но я настоятельно рекомендую убрать sort
из awk
и запустить его как отдельный этап в конвейере для ясности ).
Обратите внимание, что там написано Access Point: Not-Associated
и ESSID: off/any
. Это означает, что вы еще не указали беспроводному адаптеру, к какой беспроводной сети он должен подключаться, и поэтому он еще не подключился (, «ассоциированный» в терминологии Wi -Fi ), к какой-либо сети. Сетевая аутентификация (, если применимо, )и ассоциация являются беспроводным эквивалентом подключения сетевого кабеля. Получение IP-адреса с помощью DHCP происходит после этого, а не раньше. Вы пропустили шаг в процедуре подключения :дважды -проверьте, что вы делали до этой ситуации.
Кроме того, современные беспроводные сети часто используют аутентификацию WPA2 или даже WPA3, что требует wpa_supplicant
или аналогичного программного обеспечения для управления фазой аутентификации.Так было с первой версии безопасности WPA. Тот факт, что вы даже используете iwconfig
, предполагает, что вы, возможно, полагаетесь на устаревшую документацию, которая может описывать подключение к незашифрованным (, «открытым» )или WEP -зашифрованным сетям. И ifconfig
, и iwconfig
устарели в современных дистрибутивах; следует отдавать предпочтение новым командам ip
и iw
соответственно.
Очевидно, вы используете Kali Linux, специально предназначенную для выполнения… необычных вещей с сетями. По этой причине у него может быть отключен wpa_supplicant
по умолчанию, так как он может мешать программам, предназначенным для слежения за трафиком беспроводной сети (, и, возможно, пытаться атаковать другие беспроводные хосты ). Если вам просто нужно обычное беспроводное сетевое соединение, вам нужно специально включить его.