我想要的:
连接成功后,我希望curl成功退出。我在一个容器中运行这个命令,所以我希望curl命令成功退出,这样容器也会退出。
下面是我的例子:
$ curl -v telnet://google.com:443/
* Trying 172.217.197.113...
* TCP_NODELAY set
* Connected to google.com (172.217.197.113) port 443 (#0)
我已尝试的选项:
否保持活动状态:
$ curl -v --no-keepalive telnet://google.com:443/
* Trying 172.217.197.102...
* TCP_NODELAY set
* Connected to google.com (172.217.197.102) port 443 (#0)
连接超时:
$ curl -v --connect-timeout 5 telnet://google.com:443/
* Trying 172.217.197.139...
* TCP_NODELAY set
* Connected to google.com (172.217.197.139) port 443 (#0)
保持活动时间:
$ curl -v --keepalive-time 5 telnet://google.com:443/
* Trying 172.217.197.139...
* TCP_NODELAY set
* Connected to google.com (172.217.197.139) port 443 (#0)
标志定义
--no-keepalive (Disable keepalive use on the connection)
--connect-timeout (SECONDS Maximum time allowed for connection)
--keepalive-time (SECONDS Wait SECONDS between keepalive probes)
2条答案
按热度按时间4xrmg8kj1#
要使curl在成功的telnet连接后立即退出,请特意传递一个未知的telnet选项,并测试退出代码是否为48:
我们故意将一个未知的telnet选项
BOGUS=1
传递给curl的-t, --telnet-option
选项,将BOGUS
替换为除TTYPE
、XDISPLOC
或NEW_ENV
这三个受支持选项之外的任意名称。48是curl的错误代码 “CURLE_UNKNOWN_OPTION(48)传递给libcurl的选项无法识别/未知。"
这是因为telnet选项仅在连接成功后才处理。
轻微变化
故意传递一个语法错误的telnet选项,例如
BOGUS
或空字符串,并测试退出代码是否为49(CURLE_SETOPT_OPTION_SYNTAX)。我们在下面的函数中使用了这种方法。与前面一样,这是因为curl仅在成功连接后才处理telnet选项。形式化为函数
测试
编辑:2022年5月27日:观看此待办事项
https://curl.se/docs/todo.html#exit_immediately_upon_connection
通过:https://curl.se/mail/archive-2022-04/0027.html
1u4esq0p2#
对我有效的方法是发送“exit”到telnet,由于您对输出不感兴趣,请重定向它