Я пишу скрипт, чтобы проверить, выдан ли данный сертификат моим CA. Скрипт принимает сертификат, который я хочу проверить, в качестве входных данных. Ниже приведен фрагмент общего кода, который я использую,
output=$(openssl verify -CAfile /home/Admin/CA/sign_CA.pem $1 2> error.txt)
if [[ $output == *"error"* ]];then
echo "Certificate Verification Failed"
exit 1
fi
Как видите, я перенаправляю ошибку в файл error.txt . Также выходные данные должны быть сохранены в переменной output .
Когда я передаю несуществующий файл, я получаю сообщение об ошибке, напечатанное на моем экране. Также регулярное выражение не работает. Я не получаю сообщение об ошибке Ошибка проверки сертификата .
Вывод из моей оболочки:
Admin@Bionic-WorkBook: ~ / CA $. / Verify. sh /home/Admin/ad21.pem
Невозможно открыть ../ad21.pem для чтения. Нет такого файла или каталога
139691424915904: ошибка: 02001002: системная библиотека: fopen: Нет такого файла или каталога: ../ crypto / bio / bss_file. c: 72: fopen ('../ ad21.pem', 'r')
139691424915904: ошибка: 2006D080: подпрограммы BIO: BIO_new_file: нет такого файла: ../ crypto / bio / bss_file. c : 79: невозможно загрузить сертификат
Содержимое error.txt:
Admin@Bionic-WorkBook: ~ / CA $ cat output.txt
Не удается открыть ../ad21.pem для чтения, Нет такого файла или каталога
140041413374400: ошибка: 02001002: системная библиотека: fopen: Нет такого файла или каталога: ../ crypto / bio / bss_file. c: 72: fopen ('../ ad21.pem', 'r')
140041413374400: ошибка: 2006D080: подпрограммы BIO: BIO_new_file: нет такого файла: ../ crypto / bio / bss_file. c: 79: невозможно загрузить сертификат
Мои вопросы:
i) Как на экране появилась ошибка? Как видите, ошибка перенаправляется в файл, а вывод - в переменную. Тогда, как ошибка выводилась на экран?
i) Почему не удалось выполнить регулярное выражение? Поскольку вывод имеет то же сообщение об ошибке, почему регулярное выражение не удалось?