Существует ли программа командной строки для проверки IP-адреса (для VPN )?

Чтобы объяснить проблему, которую вы видите, это происходит во второй команде sed:

sed -e 's/\//\\/g'

makeиспользует \в качестве специального символа, который можно использовать для экранирования %, поэтому \\— это escape-последовательность, которая преобразуется в\(одиночную обратную косую черту.)

За исключением двух обратных косых черт подряд или после %, обратная косая черта сохраняется дословно, поэтому \/сохраняется как \/и не вызывает никаких проблем (, поэтому только это место вызывало беда.)

Таким образом, команда sed, которая фактически выполняется, это:

sed -e 's/\//\/g'

Если вы используете другой разделитель, например #:

, эта команда выглядит незавершенной.

sed -e 's#/#/g'

Во-первых, конечный разделитель (в данном случае#)отсутствует. Кроме того, замена получает /, а не \, как предполагалось.

Вы можете исправить это, добавив дополнительную обратную косую черту (или две тоже подойдут):

sed -e 's/\//\\\/g'

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

Другой хорошей идеей было бы удваивать каждый обратный слэш, чтобы было ясно, что makeиспользует один их уровень в качестве управляющей последовательности:

sed -e 's/\\//\\\\/g'

Тьфу, все еще довольно ужасно... Использование разделителя, отличного от #, может немного помочь, но вряд ли настолько:

sed -e 's#/#\\\\#g'

В конкретном случае, который вы используете здесь sed, то есть для преобразования пути Cygwin в путь Windows, вы можете использовать cygpath --windows, как указано @HaiVu в комментариях.

0
01.07.2021, 01:16
1 ответ

Вы можете использовать услуги ipinfo.io или ipstack.com черезcurl:
curl --silent "https://ipinfo.io/ip"
аналогичным образом измените ipна country, чтобы получить свое географическое положение.

8
28.07.2021, 11:21

Теги

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