Pipe Password to Application quando perguntado

6

O seguinte deve ser feito em um script bash:

curl --digest --user schmijos https://bitbucket.org/u/p/get/tip.zip -o tip.zip

Como posso enviar uma senha automaticamente para curl quando ela é solicitada? Como não quero ver a senha em nenhum arquivo de log, eu não vou fazer o seguinte:

curl --digest --user schmijos:$password https://bitbucket.org/u/p/get/tip.zip -o tip.zip
    
por schmijos 16.11.2012 / 09:36

2 respostas

7

Use empty :

Com a senha armazenada com segurança (é uma maneira de dizer ...)

$ echo password > pwd-file

Iniciar processo com empty . (Você deve omitir -L log no caso real.)

$ empty -f -i fifo1 -o fifo2 -L log curl -u user http://example.com

Envie o conteúdo do pipe de entrada pwd-file para empty , que o processo considera como stdin e /dev/tty .

$ empty -s -c -o fifo1 < pwd-file

Foi o que aconteceu no pseudo-terminal:

$ cat log
<<<Enter host password for user 'user':>>>password
<<<
    
por 16.11.2012 / 12:25
2

Curl pode ler as senhas em ~/.netrc . Adicione uma linha como esta para ~/.netrc :

machine bitbucket.org login schmijos password swordfish

e execute

curl --netrc --digest --user schmijos https://bitbucket.org/u/p/get/tip.zip -o tip
    
por 16.11.2012 / 23:55