我们可以使用以下命令来测试telnet VIA端口;在以下示例中,我们测试端口 6667:
[root@kafka03 ~]# telnet kafka02 6667
Trying 103.64.35.86...
Connected to kafka02.
Escape character is '^]'.
^CConnection closed by foreign host
Run Code Online (Sandbox Code Playgroud)
由于在某些机器上我们不能使用 telnet(出于内部原因),有什么替代方法来检查端口,如 telnet?
通过 HTTPS 向 url 发出 GET 请求并获取原始未解析响应的最直接方法是什么?
这可以通过 curl 实现吗?如果是这样,您需要使用哪些选项?
我想通过调用特定的 url 来对服务进行健康检查。感觉最简单的解决方案是使用 cron 每分钟左右进行一次检查。如果出现错误,cron 会向我发送电子邮件。
我尝试为此使用 cUrl,但我无法让它仅在出现错误时输出消息。如果我尝试将输出定向到 /dev/null,它会打印出进度报告。
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5559 100 5559 0 0 100k 0 --:--:-- --:--:-- --:--:-- 106k
Run Code Online (Sandbox Code Playgroud)
我尝试查看 curl 选项,但我找不到任何适合您希望它对成功保持沉默但对错误发出噪音的情况的任何内容。
有没有办法让 curl 做我想做的事,或者我应该看看其他一些工具吗?
我正在寻找一种方法来显示重定向链中的所有 URL,最好是从 shell。我找到了一种几乎可以用 curl 完成的方法,但它只显示第一个和最后一个 URL。我想看看他们所有人。
必须有一种方法可以简单地做到这一点,但我一生都无法找到它是什么。
编辑:自从提交这个我已经找到了如何使用 Chrome(CTRL+SHIFT+I->网络选项卡)来做到这一点。但是,我仍然想知道如何从 Linux 命令行完成它。
如何使用 Linux 命令行工具恢复部分下载的文件?
我部分下载了一个大文件,即由于电源中断,900 MB 中有 400 MB,但是当我再次开始下载时,它又从头开始。我如何从 400 MB 本身开始?
我正在查看一个curl命令示例,该命令在文件名前使用 @ 符号将数据发布到服务器。
curl http://localhost/ --data-binary @file.txt
Run Code Online (Sandbox Code Playgroud)
这是什么意思?它是否将文件的内容插入到命令中?是特定的curl吗?
--helpcurl的输出列出了一个--resolve选项,其中指出
--resolve <host:port:address> Force resolve of HOST:PORT to ADDRESS
Run Code Online (Sandbox Code Playgroud)
尽管如此,我没有任何运气让它工作。我试图运行的基本命令是
curl --resolve foo.example.com:443:localhost https://foo.example.com:443/
Run Code Online (Sandbox Code Playgroud)
我不断收到回应Couldn't resolve host 'foo.example.com'。我想这样做是因为我正在测试 foo.example.com 的证书,但我没有在实际服务器上测试它。相反,我在一个虚拟机器上测试它。我知道我可以编辑/etc/hosts以便 foo.example.com 解析为 localhost,但是如果我可以使它工作,这种 curl 方法似乎是“正确”的方法。
有人看到我在这里做错了吗?
我正在运行 Mac OS 10.11.6 El Capitan。我想以编程方式下载一个链接:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg
Run Code Online (Sandbox Code Playgroud)
如果我将此 URL 粘贴到任何浏览器(例如 Safari)中,则下载工作正常。
但是,如果我尝试从命令行使用 下载相同的 URL curl,它不起作用 - 结果是一个空文件:
$ ls -lA
$ curl -O https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
$ ls -lA
total 0
-rw-r--r-- 1 myname staff 0 Nov 7 14:07 mysql-5.7.16-osx10.11-x86_64.dmg
$
Run Code Online (Sandbox Code Playgroud)
当然我可以通过浏览器获取文件,但是我想了解为什么curl上面的命令不起作用。
为什么不能curl正确下载这个文件,当它明显存在于网站上并且可以通过图形网络浏览器正确访问和下载时?
我正在尝试通过以下方式卷曲 HTTPS 网站:
$ curl -v https://thepiratebay.se/
Run Code Online (Sandbox Code Playgroud)
但是它失败并出现错误:
* About to connect() to thepiratebay.se port 443 (#0)
* Trying 173.245.61.146...
* connected
* Connected to thepiratebay.se (173.245.61.146) port 443 (#0)
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS alert, Server hello (2):
* error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
* Closing connection #0
curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Run Code Online (Sandbox Code Playgroud)
使用-k/--insecure或添加insecure到 my~/.curlrc没有任何区别。
如何使用curl命令行忽略或强制证书?
使用时wget似乎工作正常。也适用openssl于以下测试:
$ …Run Code Online (Sandbox Code Playgroud) 是否可以在不传入文件名的情况下使用 curl 并发布二进制数据?例如,您可以通过 --data-binary 使用二进制发布表单:
curl -X POST --data-binary @myfile.bin http://foo.com
Run Code Online (Sandbox Code Playgroud)
但是,这需要文件存在。我希望能够将 HTTP 调用(例如休息服务)记录为 curl 命令的文本以重现请求。(例如,这极大地有助于调试这些服务)
但是,记录引用文件的 curl 命令没有用,所以我希望我可以实际记录原始二进制数据,大概是 base64 编码的,但仍然允许您复制和粘贴记录的 curl 命令并执行它。
那么,是否可以在不引用文件的情况下使用 curl 并发布二进制数据?如果是这样,那将如何运作?一个例子会是什么样子?
curl ×10
wget ×2
binary ×1
command-line ×1
dns ×1
download ×1
https ×1
linux ×1
monitoring ×1
networking ×1
osx ×1
shell ×1
ssl ×1
telnet ×1