Bash 스크립트에서 여러 GPG 키에 서명하는 방법(비대화형)

Bash 스크립트에서 여러 GPG 키에 서명하는 방법(비대화형)

우리 팀을 위해 몇 가지 키를 설정하고 있습니다. 방금 가져온 모든 (알려진) 키에 서명하는 bash 스크립트를 만들고 싶습니다. 메시지를 표시하지 않고(비대화형) 키에 서명하고 싶습니다.

이것이 내가 가진 것입니다.

for key in $(gpg2 -k --with-colons | grep pub: | cut -d ":" -f 5); do
  gpg2 --fingerprint $key
  # TODO: check if the key is already signed; if not, sign it
  gpg2 --batch --yes --sign-key $key
done

위의 내용에는 검사가 누락되어 있습니다(키가 이미 서명된 경우 gpg2가 올바른 작업을 수행하는 것처럼 보이므로 문제가 되지 않습니다). 그러나 더 중요한 것은 일부 "예" 프롬프트에 응답할 수도 없다는 것입니다.

다른 관련 질문에는 모두 대화형 작업이 필요한 답변이 포함되어 있습니다(xdotool을 사용하여 키 입력을 입력하는 경우가 있는데 마음에 들지 않습니다).

답변1

출력을 확인할 수 있습니다 gpg --export-ownertrust.

예를 들어:

FP="9274E588E866A10B713C9CCD9EB3AD425D1CCC11"
echo "Checking Trust for $FP" 
TRUST_LEVEL=$(gpg --export-ownertrust| grep $FP | awk  -F : '{print $2}')
case $TRUST_LEVEL in
    2)
        echo "I don't know or won't say (export: 2)"
        ;;
    3)
        echo "I do NOT trust            (export: 3)"
        ;;
    4)
        echo "I trust marginally        (export: 4)"
        ;;
    5)
        echo "I trust fully             (export: 5)"
        ;;
    6)
        echo "I trust ultimately        (export: 6)"
        ;;
    *)
        echo -n "Trust level unknown, key not imported or not signed?"
        ;;
esac

관련 정보