2011-04-05 2 views
2

Я пытаюсь написать сценарий bash, который проверяет, действительна ли данная подпись или нет. У меня есть два возможных выхода из:скрипт bash, если подпись GPG действительна и принадлежит ключу

$ gpg --no-default-keyring --keyring /etc/pubring.gpg --verify file.tgz.sig file.tgz 

НЕПРАВИЛЬНЫЕ

gpg: Signature made Tue 05 Apr 2011 11:01:19 CEST using RSA key ID E32804F0 
gpg: Can't check signature: public key not found 

RIGHT

gpg: Signature made Tue 05 Apr 2011 11:01:19 CEST using RSA key ID E32804F0 
gpg: Good signature from "Test key <[email protected]>" 

Как я могу обнаружить, если проверка была права без разбора результата.

Этот вопрос похож на Verify GPG file signature with Perl но II хотел бы сделать это в Баш (или, если очень нужен Python.)

ответ

6

Я не знаю команду gpg, но возвращает ли она другое значение выхода для «неправильных» и «правильных» результатов? Самый простой способ проверить это после того, как работает команда будет:

echo $? 

Я бы ожидать, что она вернет 0, если все в порядке и что-то еще, если нет. Так что ваш Баш скрипт будет выглядеть следующим образом:

gpg --no-default-keyring --keyring /etc/pubring.gpg --verify file.tgz.sig file.tgz 

if [ $? -eq 0 ] 
then 
    echo All is well. 
else 
    echo Problem with signature. 
fi 
+1

не то, что так же, как 'GPG --no-умолчанию-брелок --keyring /etc/pubring.gpg --verify file.tgz.sig файл. tgz && echo Все хорошо || эхо Проблема с подписью?? или w/if: 'if gpg --no-default-keyring --keyring /etc/pubring.gpg --verify file.tgz.sig file.tgz; то эхо все хорошо; else echo Проблема с сигнатурой; fi' – nonchip

1

От страницы человека GnuPG:

Программа возвращает 0, если все было штраф, 1, если хотя бы подпись была плохая, и другие коды ошибок для фатальных ошибок.

Таким образом, вы можете использовать http://docs.python.org/library/subprocess.html, чтобы получить код возврата gpg.

Смежные вопросы