411 — это ошибка клиента «Требуется длина». Это означает, что запрос не содержит этого поля. Нужно правильно задать запрос. Предполагая, что вы используете SoapUI в качестве клиента (приложения, которое вызывает сервер ), вам необходимо установить там заголовки запроса .
Обратитесь к этому, например:https://www.soapui.org/docs/functional-testing/teststep-reference/http-request/headers.html
Зависит от того, что делает программа. Помимо стандартного вывода (fd 1 )и ошибки (fd 2 ), часто также открывается стандартный ввод(fd 0 )для чтения -для записи, когда программа запускался с терминала без перенаправления, и его можно было использовать для записи вывода. Другой вариант — явно открыть /dev/tty
, что дает новый fd, подключенный к управляющему терминалу процесса.
modulecmd
по какой-то причине использует стандартный ввод. Запустив strace
на нем, мы увидим, что он записывает строку заголовка в исходный fd 2, затем (после некоторого несвязанного жонглирования fd, которое не касается fd 0 )дублирует fd 0 (stdin )в fd 2 и печатает там описание.
... write(2, "\n----------- Module Specific Hel"..., 70) = 70 ... [unrelated shuffling of other fds] ... dup(0) = 2 write(2, "\tThis module does absolutely not"..., 37) = 37 write(2, "\r\n", 2) = 2 write(2, "\tIt's meant simply as a place ho"..., 44) = 44 ...
Таким образом, вы можете перенаправить эту часть сообщения, перенаправив stdin (fd 0 )в какой-либо файл, например.0>somefile
(или /dev/null
, чтобы подавить его ), в дополнение к любым перенаправлениям stdout и stderr.
Перенаправление наподобие < /dev/tty
также может препятствовать выводу, давая процессу явный -только для чтения fd. (Однако программа получит ошибку при вызове write()
. )В Linux вы даже можете выполнить < /dev/stdin
с тем же результатом, если исходный стандартный ввод подключен к терминалу.
Если какая-то программа использовала /dev/tty
, получение выходных данных затруднено. Если возможно, что-то вродеsetsid
может быть использовано для запуска программы без управляющего терминала, что будет означать, что открытие /dev/tty
не удастся. (Во всяком случае, это то, что он делает в Linux.)