Os dois números hexadecimais em
Not a JPEG file: starts with 0x48 0x54
traduza para ASCII HT , o que eu acho que continua a HTTP[...] . Verifique o cabeçalho do arquivo com xxd -l 20 img.jpg . Isto é para ser esperado saída do último comando que você postou, desde
wget --save-headers
instrui wget a preceder a saída com o cabeçalho HTTP da resposta.
As outras duas invocações não farão isso.
Acabei de testar seu script e ele funciona comcurl ou wget . Para wget fazer o download do arquivo, uma seqüência de caracteres do usuário -U é necessária, caso contrário, o servidor recusará. Pode usar
curl -o img.jpg
ou
wget -U "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.17 (KHTML, Gecko) Ubuntu/11.04 Chromium/11.0.654.0 Chrome/11.0.654.0 Safari/534.17" -O img.jpg
sem --save-headers .