PDA

View Full Version : curl digitato va, via script fallisce


rjko
14-11-2015, 14:18
Buon sabato,

scrivo perché ho un problema fastidioso che riguarda la bash e il comando curl.

Devo automatizzare la chiamata API REST a un cluster e uso il comando curl per passargli la stringa coi parametri che elaborerà per modificare lo stato della vm indicata e restituire un output json-like.

Il comando intero non è importante, ma lo inserisco per completezza:
curl -X PUT rest_service_url}/rest/user/current/resources/server/{UUID}/change_status \
-u {Authentication Token} \
-d 'newStatus=STOPPED' \
-d 'safe=false'

Se questo comando viene impartito da uno script, il server restituisce vari internal errors e infine un errore HTTP:503 (risorsa non trovata)

Se si digita interamente nella shell invece (per comodità di debugging prima del curl faccio un echo del comando coi parametri sostituiti così da poterla copiare), l'operazione va a buon fine e ricevo nello stdout l'oggetto json atteso.

Sapete aiutarmi?

pigi2pigi
14-11-2015, 19:19
Nello script lo scrivi così, con le "\" ?

rjko
14-11-2015, 19:28
Ciao pigi2pigi,

no, nello script è sulla stessa riga e con le opzioni divise da un solo spazio.

pigi2pigi
14-11-2015, 23:14
Mi sembra strano, la butto lì: hai messo in testa allo script
#!/bin/bash

Io senza avere nulla installato ottengo in entrambi i modi gli stessi messaggi:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>405 Method Not Allowed</title>
</head><body>
<h1>Method Not Allowed</h1>
<p>The requested method PUT is not allowed for the URL /rest/user/current/resources/server/change_status.</p>
<hr>
<address>Apache/2.2.22 (Ubuntu) Server at 192.168.1.10 Port 80</address>
</body></html>