usar socat para fornecer senha para bsign

2

Eu tenho muitos servidores, onde eu implemento vários binários. Para este propósito, eu uso um script que os empacota em arquivos, publica no repositório local e, em seguida, ssh-es para os servidores de destino e instala.

Por enquanto, tenho um script assim:

#!/bin/bash
packs=(app1 app2 app3 great_app main_server and_so_on)
for pack in ${packs[@]}; do
    cd "$pack"
    svn up
    make redist-package
    SERVER="$(cat ./server)"
    ssh "$SERVER" <<< "wget 'http://dev-server/$pack'; install './$pack'" # ssh uses keys to authenticate
    cd - &>/dev/null
done

aqui, install é um script especial que descompacta e instala, nosso pequeno emerge feito à mão. Eu removi toda a verificação de erros para evitar a complicação do script.

O problema agora é: Eu tenho que assinar todos os binários usando bsign . Eu quero que um usuário insira uma senha uma vez e passe para bsign . Caso contrário, é difícil inserir a mesma senha individualmente para cada um dos pacotes.

Infelizmente, bsign não tem capacidade, como sudo -S , de ler senhas de stdin. Então… eu tentei usar o socat sem sorte. Eu usei esta linha do manual socat , sem resultado:

socat - EXEC:'bsign -si .',pty,setsid,ctty <<< 'My password'

bsign apenas me mostra o prompt de senha como se não houvesse socat. Depois de digitar a senha, funciona.

Meu palpite é que é porque o bsign roda o gpg que, por sua vez, pede uma senha. É possível que socat afete esse gpg , bem como bsign ?

Atualização: Encontrei a opção bsign de -P --passphrase-fd0 , que deve informar gpg para ler a senha de fd 0 , ou seja, stdin . Tentarei amanhã.

Atualização: com falha, -P não funciona. Isso pode ser causado por um buggy (custom-patched) bsign , mas tenho que usar.

    
por gluk47 15.09.2013 / 15:52

0 respostas

Tags