LINUX.ORG.RU

Научиться пользоваться чужим бинарником

 , ,


0

1

Не уверен, что в Development...

Есть железка на онтопике, её веб-интерфейс использует некий бинарник cgiclient, которым нужно научиться пользоваться.

Бинарник при запуске говорит на JSON'е:

$ cgiclient

{
	"Error" : 
	{
		"TextId" : "No input: cgi element 'request' was not found"
	},
	"Success" : false
}

Распространённые параметры справки -?, -h, --help, ... не действуют.

Чтобы понять как и что ему передаётся, сделал подмену:

$ cat cgiclient
#!/bin/sh

echo "argv0: $0" >> /tmp/log
echo "argv*: $*" >> /tmp/log
if [ -p /proc/self/fd/0 ]; then
    echo -n 'stdin: ' >> /tmp/log
    cat /proc/self/fd/0 >> /tmp/log
fi

Получаю следующий результат:

$ cat /tmp/log
argv0: cgiclient
argv*: 
stdin: request={ "FunctionName": "GetAllowedLanguages", "SessionId": "7bc1cdd7-791d-4375-8fb1-6c02c3fedc6a" }

Т.е. ожидает заветный request с JSON на стандартный вход. Пробую передать:

$ echo 'request={ "FunctionName": "GetAllowedLanguages", "SessionId": "7bc1cdd7-791d-4375-8fb1-6c02c3fedc6a" }' | cgiclient

Получаю ту же ошибку: «No input: cgi element 'request' was not found». ЧЯДНТ?

Из инструментов там есть strace.

★★

Последнее исправление: Evenik (всего исправлений: 2)

метод POST подразумевает обязательно наличие некоторых переменных окружения.

Как минимум REQUEST_METHOD=POST и CONTENT_LENGTH.

vel ★★★★★
()