Если ваш инструмент командной строки является интерактивным, вы можете написать expect
- скрипт.
В таком сценарии вы можете "ожидать" некоторого вывода (например, $>
как пользовательский запрос) и, когда он появится, послать команду на stdin вашей командной строки.
Смотрите, например, статью в Википедии https://en.wikipedia.org/wiki/Expect
Если ваш инструмент не интерактивный, вы можете написать простой скрипт (как указано в комментарии), который будет вызывать каждую команду, которую вам нужно использовать, например:
#!/bin/bash
command1 arg1
command2 arg1 arg2
Когда вы вызываете этот скрипт через . /path/to/script
он будет выполнять каждую команду до тех пор, пока не
stdin
, илиWget в основном используется для загрузки через HTTP, HTTPS и FTP, поэтому по умолчанию для соединений будет использоваться TCP. Ping использует протокол под названием ICMP , который в основном передает "привет" хосту и проверяет, отвечает ли он. ICMP не использует порт, что означает http: //. Он сообщает "компьютеру" открыть соединение на порту 80 "и для HTTPS-порта 443. Поскольку ICMP не использует порты, ping ожидает только и IP-адрес, но wget установил TCP-соединение и загрузил файл.
{{ 1}} Чтобы ответить на вопрос, который вы задали. wget
принимает URL-адрес, но ping
принимает имя хоста. Ваш URL-адрес состоит из протокол ( https
), имя хоста ( gfe.cit.api.here.com
), путь ( /1/layer_put.json
) и три закодированные параметры ( layer_id = 123 & app_id = x2 & app_code = x1
). В URL могут отображаться и другие элементы, например аутентификация и порт.
Для приемлем только компонент имени хоста. ] команду ping
.
Затем команда wget
открывает TCP / IP-соединение с портом, ожидаемым протоколом ( 443 / tcp
в случае https
) и использует протокол HTTP для получения содержимого с указанного URL.
Команда ping
использует ICMP для отправки запроса ping на указанный хост, который затем возвращает ответ эхо-ответ . Это пакеты ICMP типов 8 и 0 соответственно.
Основная причина ошибки wget
заключается в том, что вы не указали параметр для wget
, поэтому оболочка анализирует его. Символ и
в середине URL-адреса указывает оболочке запускать все до этого момента в фоновом режиме. Затем он немедленно запускает оставшиеся две части строки и сразу же выводит ошибки.
Используйте одинарные кавычки в своем URL-адресе, и, вероятно, все будет работать так, как вы планировали.
Итак, мы имеем
wget -O layer_put.json 'https://gfe.cit.api.here.com/1/layer_put.json?layer_id=123&app_id=x2&app_code=x1'
ping -c3 gfe.cit.api.here.com
В ответ на:
В чем разница между «ping» и «wget» в отношении разрешения имени хоста
Ping
ожидает либо IP-адрес, либо имя хоста в качестве параметра. Вы даете ему полный URL-адрес, который он пытается разрешить как имя хоста и терпит неудачу. Когда все, кроме полностью квалифицированного имени, удалено, команда ping
может проверить соединение (и не работает в моем следующем тесте, возможно, из-за того, что запрос ICMP
заблокирован или сервер down):
$ ping gfe.cit.api.here.com
Pinging cle2-cit.eu-west-1.elasticbeanstalk.com [54.154.19.134] with 32 bytes of data:
Request timed out.
Общие различия между ping
и wget
см. в ответе Алека.
Вероятную причину, объясняющую ошибку 400, см. В статье Роаймы.