Анализ ответа curl с помощью sed

Может быть, этот «пароль пользователя Apple» является паролем вашего набора ключей, который содержит закрытый ключ к открытому ключу, с которым вы проходите аутентификацию?

Теперь вы хотите использовать эту пару ключей -для аутентификации по адресу hutber@192.168.205.130

Таким образом, чтобы удалить этот пароль, вам придется создать новый ключ без защиты паролем. Это можно сделать с помощью упомянутого кейгена ssh -.

Также вы можете посмотреть, как использовать узлы перехода с конфигурацией ssh ​​-в случае, если это применимо к вашей локальной машине:https://ma.ttias.be/use-jumphost-ssh-client-configurations/

1
07.05.2020, 12:34
2 ответа

Я бы использовал подстановку команд вместо конвейера. На машине с Linux я бы использовал:

curl "http://my.api.com?query=$(curl https://api.ipify.org?format=json | grep -oP 'ip":"\K[0-9.]+')"

И на машине, на которой нет инструментов GNU (, например. macOS ), один из:

curl "http://my.api.com?query=$(curl https://api.ipify.org?format=json | sed -E 's/.*ip":"([0-9.]+).*/\1/')"

Или даже

curl "http://my.api.com?query=$(curl https://api.ipify.org?format=json 2>/dev/null | tr -d '"' | sed 's/.*ip:\([0-9.]*\).*/\1/')"
2
28.04.2021, 23:16
curl 'https://api.ipify.org?format=json' | jq -r '.ip'

Это будет использовать jqдля извлечения значения, связанного с ключом ipверхнего уровня -в ответе JSON из curl.

Затем вы можете использовать это, чтобы сделать другой curlвызов:

ipaddr=$( curl 'https://api.ipify.org?format=json' | jq -r '.ip' )
curl "http://my.api.com?query=$ipaddr"

Также обратите внимание, что URL-адреса всегда должны заключаться в кавычки в командной строке, поскольку они могут содержать ?и &и другие символы, которые интерпретатор интерпретирует особым образом.

jqдоступен через Homebrew в macOS.


Или вы могли бы , как предлагает pLumo в комментариях , просто не запрашивать ответ в формате JSON отapi.ipfy.org:

ipaddr=( curl 'https://api.ipify.org' )
curl "http://my.api.com?query=$ipaddr"
4
28.04.2021, 23:16

Теги

Похожие вопросы