Попробуйте
sudo iwlist wlan0 scan | grep -i essid | awk -F'"" '{ print $2 }' >> essid.txt
Это передает вывод grep
в awk
, который использует разделитель "
и печатает только поле с ESSID.
Этот скрипт запросит пароль, расшифрует зашифрованный скрипт и запустит его с первым параметром командной строки, переданным основному скрипту:
#!/bin/bash
bash <(
openssl enc -base64 -d -aes-256-cbc <<<'U2FsdGVkX1/m01Eg0CvZ7DiBi5Nf81+JrCWfKIDI9WtbkTZIVLhZskkKIioVfbSe'
) "$1"
Здесь не используется строка#!
-расшифрованного скрипта, но предполагается, что он будет нормально работать подbash
(и что он всегда успешно расшифровывается ). Сценарий расшифровки передается интерпретатору bash
посредством подстановки процесса при вызове openssl
вместе с первым аргументом командной строки.
Чтобы записать расшифрованный скрипт на диск, запустите его, только если он был правильно расшифрован (с помощью предназначенного для него интерпретатора ), а затем удалите его:
#!/bin/bash
tmpscript=$(mktemp)
trap 'rm -f "$tmpscript"' EXIT
if ! openssl enc -base64 -d -aes-256-cbc <<<'U2FsdGVkX1/m01Eg0CvZ7DiBi5Nf81+JrCWfKIDI9WtbkTZIVLhZskkKIioVfbSe' >$tmpscript
then
exit 1
fi
chmod +x "$tmpscript"
"$tmpscript" "$1"
Если вы хотите передать все параметры командной строки основного скрипта в расшифрованный скрипт, вы должны изменить "$1"
в приведенных выше примерах на "$@"
. Двойные кавычки важны, поскольку они гарантируют, что отдельные аргументы передаются без разделения на пробелы и без подстановки имен файлов.
У вас было это в более ранней версии вопроса — передайте вариант -s
наsh
:
echo "U2FsdGVkX1/m01Eg0CvZ7DiBi5Nf81+JrCWfKIDI9WtbkTZIVLhZskkKIioVfbSe" | openssl enc -base64 -d -aes-256-cbc | sh -s "$1"
Это говорит оболочке читать команды из стандартного ввода, принимая аргументы в своей командной строке (после-s
)в качестве позиционных параметров для кода скрипта, поступающего со стандартного ввода. Конечно, переменные оболочки всегда должны быть заключены в кавычки. если у вас нет веской причины не делать этого, и это, вероятно, более полезно в долгосрочной перспективе передать"@"
(все аргументы )в оболочку.
Таким образом, было бы также разумно цитировать все ссылки для переменных оболочки в test1.sh
; например,
ls -l "$1"
Первое решение (, представленное выше ), кажется, работает хорошо для «нормальных» аргументов. Но в случае аргументов, начинающихся с -
, лучше сделатьsh -s -- "$1"
(или"$@"
). Например,
#!/bin/sh
code="U2FsdGVkX1/m01Eg0CvZ7DiBi5Nf81+JrCWfKIDI9WtbkTZIVLhZskkKIioVfbSe"
echo "$code" | openssl enc -base64 -d -aes-256-cbc | sh -s -- "$@"
(где я поместил зашифрованный скрипт в переменную просто чтобы сделать командную строку короче, чтобы он поместился в столбце отображения суперпользователя ).