【问题标题】:printing the result of a grep and the code of curl打印 grep 的结果和 curl 的代码
【发布时间】:2020-01-26 21:39:02
【问题描述】:

我想从一个大文件中获取所有 url,并在线检查该链接的状态。所以,例如,我想拥有

stackoverflow.com, 200 OK ...

到目前为止我有grep -o "https?:*" file.txt | xargs curl -IsN 2>&1 | grep HTTP,但我不知道如何显示网址grep 正在喂xargscurl 正在访问。`,但这只会返回

HTTP/1.1 200 OK
HTTP/1.0 301 Moved Permanently

【问题讨论】:

  • 显示你的file.txt的内容
  • @Kent:grep 工作正常,我只是想知道如何在 xargs 之后打印进入 curl 的 url
  • 您的 file.txt 中有每行一个 URL 吗?

标签: linux bash curl


【解决方案1】:

你可以试试这样的:

grep  "https:" file.txt | xargs -I {} curl -I  -L -s -o /dev/null -w "%{url_effective},%{response_code}" {}

我想知道您的 grep 是否真的捕获了整个 URL,因为您使用了 -o 参数。您是否单独测试过grep 命令?

请注意,在此示例中,我添加了-L 参数以自动跟踪重定向,并且我使用cURL variables 来获取重定向后的最后一个响应代码(%{response_code})和最终URL(%{url_effective})。但如果您愿意,可以显示文件中的原始 URL,而不是 curl 显示的最终 URL。

大多数时候,访问 domain.com 意味着重定向到 www.domain.com。所以第一个请求返回 301 或 302 响应码,第二个请求返回 200(如果一切顺利)。在配置错误的网站上可能存在多个重定向甚至重定向循环。所以我们通常感兴趣的是最后的响应码。

然后,使用xargs,您可以添加并行处理。我想这是你的想法,因为你说你有一个大文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-13
    • 2013-06-16
    • 2022-01-16
    • 1970-01-01
    • 2022-12-10
    • 2020-10-05
    • 2023-02-06
    • 1970-01-01
    相关资源
    最近更新 更多