Я хочу загрузить файл с клиентского веб-сервера. Этот веб-сервер работает только локально. Чтобы добраться туда, мне нужно использовать ssh. Мне нужен контент, а также возвращаемое значение (например, соединение SSH прервано, веб-сервер не работает).
Что мне нужно изменить? Моя первая попытка:
#!/bin/bash
RETURN=0
CONTENT = ""
sshpass -p xxxxxx ssh [email protected] "curl -X POST http://127.0.0.1:10000/status -H 'Content-Type: application/json' > $CONTENT | bash; RETURN=$?"





Если вы хотите получить код выхода curl и возвращаемое значение curl:
#!/bin/bash
CONTENT=$(sshpass -p xxxxxx ssh [email protected] "curl -X POST http://127.0.0.1:10000/status -H 'Content-Type: application/json'")
RETURN=$?
echo "$RETURN, $CONTENT"
В вашем скрипте вы устанавливаете переменные на сервере, на который вы вошли по ssh.
Почти готово. Когда я это делаю, $CONTENT показывает смесь в одной строке многострочного вывода вывода серверов. Это почему?
Каков фактический результат и чего вы ожидаете от него?
8 строк вывода json
Похоже, вы забыли заключить "$CONTENT" в двойные кавычки или, возможно, значение содержит возврат каретки DOS.
Статус выхода
sshбудет статусом выходаcurl, если это единственная команда, которую вы выполняете.sshpassне позволяет получить статус выходаssh, что является еще одной причиной для настройки аутентификации с открытым ключом вместо использованияsshpass.