Как войти в gpg проверенные файлы? - PullRequest
0 голосов
/ 13 февраля 2020

Я запускаю gpg --verify в списке файлов, на которые я ссылаюсь с gpg_verify.txt. Я хочу отследить, какие из них прошли, чтобы впоследствии я мог загрузить некоторые файлы, которые сначала прошли проверку.

Следовательно, как я могу получить информацию о том, прошел ли / не удалось определенный файл в моем l oop, чтобы я мог зарегистрировать его в другом файле, на который я смогу ссылаться позже?

Я хочу что-то вроде:

while read -r line;
do 
  gpg --verify $line
  if(above output^ passes) then;
   > passed_gpg.txt
  else
   > failed_gpg.txt
done < gpg_verify.txt

Вот пример вывода, когда я просто запускаю:

while read -r line;
do 
  gpg --verify $line
done < gpg_verify.txt

Вывод:

gpg: Signature made Tue Feb 11 17:26:10 2020 UTC
gpg:                using RSA key XXXXXXXXXXXX
gpg: Good signature from "Rando person (XXXXX Signing Key) <example@example.com>" [ultimate]

1 Ответ

1 голос
/ 13 февраля 2020

Рассмотрим:

#!/usr/bin/env bash
while IFS= read -r filename; do
  if gpg -v "$filename"; then
    printf '%s\n' "$filename" >&3
  else
    printf '%s\n' "$filename" >&4
  fi
done <gpg_verify.txt 3>passed_gpg.txt 4>failed_gpg.txt

Что здесь отличается?

  • Мы помещаем команду, состояние выхода которой мы хотим проверить , внутри if.
  • Мы явно записываем что-то в выходные файлы , а не просто открываем их.
  • Мы открываем каждый выходной файл только один раз, когда l oop начинается (и затем присоединяется к ним с различными номерами файловых дескрипторов). Это означает, что выходной файл не усекается каждый раз, когда мы хотим записать в него.

Это все еще не идеально - лучший инструмент, вероятно, позволит избежать предположений о именах файлов, подразумеваемых при их сохранении в линейно-ориентированный файл - но это место для начала.

...