Domanda Utilizzo di arricciatura in uno script bash e recupero: (3) Caratteri non validi trovati nell'URL


Quindi ho uno script bash molto semplice che si sta curlando su un server di autenticazione per un'intestazione. L'url di intestazione viene scritto in una var e quindi utilizzato nella successiva chiamata di arricciatura. Quando si utilizza il var set nella prima chiamata a ricciolo ricevo "arricciatura: (3) Caratteri non validi trovati nell'URL". Sono in grado di echo la var e tutto sembra a posto, sono anche in grado di resettare la var (nel mio esempio qui sotto) e funziona.

Lo script di Bash

URL=$(curl -i -X GET -H "X-Auth-User: MyUserna,e" -H "X-Auth-Key: MyAPIKey" "https://urlToAuthServer.tld/auth/v1.0/" | grep "X-Storage-Url:" | awk '{print $2}')

curl -X GET -H "X-Auth-Token: MyAuthTok" "${URL}/folder/myfile.txt" -o ./myfile.txt

Quando eseguo l'esempio sopra, ottengo:

curl: (3) Illegal characters found in URL

L'URL var è simile a questo (nessun carattere illegale)

https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534

Quando lo faccio nel terminale funziona:

$ URL = $ (curl -i -X ​​GET -H "X-Auth-User: MyUserna, e" -H "X-Auth-Key: MyAPIKey" "https: //urlToAuthServer.tld/auth/v1.0/"| grep" X-Storage-Url: "| awk '{print $ 2}')

$ echo $ URL

https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534

Adesso copio e incollo la stringa e la ricompongo in URL come tale (di nuovo tutto nel terminale):

>$ URL="https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534"
>$ curl -X GET -H "X-Auth-Token: MyAuthTok" "${URL}/folder/myfile.txt" -o ./myfile.txt

Funziona.

Quindi, perché nel primo esempio viene visualizzato l'errore "arricciatura: (3) caratteri non consentiti trovati nell'URL"?

Aggiornare Ho eseguito questo: printf %s "$URL" | xxd

Ecco l'output (indirizzato cambiato si ottiene l'idea)

0000000: 6874 7470 733a 2f2f 6461 6c30 352e 6f62  https://server.ob
0000010: 6a65 6374 7374 6f72 6167 652e 736f 6674  jectstorage.lite
0000020: 6c61 7965 722e 6e65 742f 7631 2f41 5554  sabers.com/v1/AUT
0000030: 485f 6665 3235 3339 3434 2d38 6433 322d  H_aE2563981-7d32-
0000040: 3432 3138 2d61 6566 632d 6665 6638 3465  4201-bdoi-fef94a
0000050: 6166 3331 6232 0d                        ag11c8.

27
2018-01-26 16:33


origine


risposte:


L'URL $ contiene a \r (CR) alla fine (0d). Rimuovilo con

URL=${URL%$'\r'}

prima di usarlo con curl.


64
2018-01-26 17:04