Eu precisava da mesma coisa e estava procurando por solução. Além de executar gpg-agent
, que pedirá a senha apenas uma vez (por exemplo, durante a inicialização) e armazenará em cache para o próximo uso, não encontrei nada.
O problema é como interagir com os scripts interativos, que são os que solicitam a entrada do usuário do stdin. Espere ( apt-get install expect
) resolve exatamente isso.
Este é o script que eu escrevi e salvei em / usr / local / bin / reprepro_expect:
#!/usr/bin/expect -f
set timeout 2
set passphrase "mysupersecretpassword"
spawn reprepro -b [lindex $argv 0] [lindex $argv 1] [lindex $argv 2] [lindex $argv 3]
expect {
"*passphrase:*" {
send -- "$passphrase\r"
}
}
expect {
"*passphrase:*" {
send -- "$passphrase\r"
}
}
interact
Você pode executá-lo assim:
reprepro_expect [path_to_repository] [command] [distribution] [package_name]
Por exemplo:
Adicionar novo pacote:
reprepro_expect /var/www/myrepo includedeb wheezy mypackage_0.1-1_all.deb
Excluir pacote
reprepro_expect /var/www/myrepo remove wheezy mypackage
Segurança:
Como a senha da sua chave privada é armazenada no script, recomendo chown
to user, sob o qual será usada e chmod
to 500. Por que a frase secreta não é passada como outro argumento? Porque ele seria armazenado em ~ / .bash_history e seria mostrado em ps axu
durante o tempo de execução.