🖧 Использование Curl для создания Telnet-соединения |

🖧 Использование Curl для создания Telnet-соединения

Мануал

Это удивительно просто: вы можете выполнить команду curl -v telnet://$host:$port.

Флаг -v (verbose) необязателен, но без него вы не увидите подробностей о создании соединения.

Вот пример:

curl -v telnet://example.com:80
*   Trying 93.184.215.14:80...
* Connected to example.com (93.184.215.14) port 80 (#0)

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

Вот что происходит, когда хост недоступен:

curl -v telnet://this.will.not.exist.localhost.test:80
* Could not resolve host: this.will.not.exist.localhost.test
* Closing connection 0
curl: (6) Could not resolve host: this.will.not.exist.localhost.test

Вот что происходит, когда хост доступен, но порт недоступен:

curl -v telnet://localhost:55555
*   Trying 127.0.0.1:55555...
* connect to 127.0.0.1 port 55555 failed: Connection refused
*   Trying ::1:55555...
* connect to ::1 port 55555 failed: Connection refused
* Failed to connect to localhost port 55555 after 0 ms: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 55555 after 0 ms: Connection refused```

Знание этих выводов может помочь вам устранить неполадки, если что-то пойдет не так.

Кстати, если у вас есть продвинутый вариант использования telnet, вы можете передать флаг –telnet-option в curl.

Зачем это нужно?

Возможно, вы работаете в контейнерной среде, где telnet или CLI-инструмент вашего сервиса недоступен, но у вас есть доступ к curl.

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

🐳 Почему процессы в контейнерах Docker не должны запускаться от имени Root

Например, у вас запущен кластер Kubernetes, и вы хотите быстро протестировать работу таких сервисов, как Redis или Memcached в вашем кластере.

Возможно, вы захотите провести сквозной тест, чтобы убедиться, что служба запускается и вы можете взаимодействовать с ней из одной из капсул, что продемонстрирует, что с точки зрения сетевых технологий все работает.

Kubernetes позволяет настраивать зонды для проверки TCP-соединения на определенном порту, что позволяет убедиться в том, что на этом порту что-то работает:

spec:
  containers:
    - name: "redis"
      readinessProbe:
        tcpSocket:
          port: 6379

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

В этом «действительно» рабочем тесте и заключается использование telnet.

Если у вас установлен curl и настроены конфигурации Kubernetes, такие как настройка развертывания с сервисом для выставления redis в качестве действительного имени хоста, вы можете запускать:

curl -v telnet://redis:6379
*   Trying 172.30.0.3:6379...
* Connected to redis (172.30.0.3) port 6379 (#0)

Затем вы можете выполнить любую команду Redis, например, перечислить все ключи:

KEYS *
*3
...

Мы только что подтвердили, что служба доступна по имени хоста redis и действительно работает Redis, потому что вы взаимодействовали с сервером.

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий