Linux curl 命令:来自 Shell 的 Web 交互

2023-10-21

curl是一个功能强大的命令,可让您将数据传输到服务器或从服务器传输数据。

它支持多种协议,并且无需用户交互即可处理各种与网络相关的任务。

 

 

安装卷曲

curl是一种广泛使用的工具,大多数 Linux 发行版都将其包含在其存储库中。根据您的操作系统,安装命令可能会有所不同。

基于 Debian/Ubuntu 的发行版

安装curl在 Debian、Ubuntu 或任何其他基于 Debian 的系统上:


$ sudo apt update
$ sudo apt install curl  

红帽/Fedora/CentOS

对于红帽及其衍生产品:


$ sudo yum install curl  

如果您使用的系统dnf:


$ sudo dnf install curl  

 

支持的协议

With curl,您可以使用多种协议,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、LDAP、LDAPS 等。


$ curl --version
  

Output:


Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp 
  

您会注意到输出开头列出的已安装的curl版本支持的协议。

了解您的协议非常重要curl安装支持,特别是当您处理许多服务器和服务时。

 

URL 通配符

URL 通配curl允许您通过在大括号中指定 URL 的一部分来使用单个命令获取多个 URL{}顺序。

在处理具有可预测 URL 结构的站点或服务器时,这可以节省时间并实现流程自动化。

获取连续的 URL

如果您知道 URL 是按数字顺序排列的,则可以使用 URL 通配符来获取所有 URL:


$ curl http://example.com/file[1-5].zip  

该命令获取file1.zip, file2.zip, … 取决于file5.zip.

根据特定模式获取

您可以在大括号内指定多个模式:


$ curl http://example.com/file_{A,B,C}.zip  

这获取file_A.zip, file_B.zip, and file_C.zip.

组合多种模式

URL 通配允许在单个 URL 中使用多个模式序列:


$ curl http://example.com/{year2022,year2023}/event_{A,B,C}.html  

该命令将获取六个 URL:http://example.com/year2022/event_A.html to http://example.com/year2023/event_C.html.

负责任地使用 globbing 以避免无意的 DoS 攻击或受到速率限制。

 

使用变量的动态 URL

从8.3.0版本开始,curl引入了对命令行变量的支持。这些变量可以使用设置--variable name=content or --variable name@file syntax.

后者允许您从文件设置变量的内容,如果文件设置为单个破折号 (-),则它从标准输入读取。

要扩展选项参数中这些变量的内容,可以使用{{name}}语法,前提是选项名称前缀为--expand-.

例如,如果您有一个名为“username”的变量,则可以在 URL 中使用它,如下所示:--expand-url "https://example.com/{{username}}/details".

基本变量扩展:

设置名为“username”的变量并在 URL 中使用它。


$ curl --variable username=JohnDoe --expand-url "https://example.com/profile/{{username}}"  

使用环境变量:

Use the USERURL 中的环境变量。


$ curl --variable %USER --expand-url "https://example.com/api/{{USER}}/details"  

使用文件中的变量:

如果你有一个名为token.txt包含身份验证令牌,您可以在 URL 中使用其内容。


$ curl --variable token@token.txt --expand-url "https://api.example.com/data?auth={{token}}"  

使用多个变量:

将多个变量合并到一个 URL 中。


$ curl --variable user=JohnDoe --variable action=edit --expand-url "https://example.com/{{user}}/{{action}}"  

通过利用变量,您可以使您的curl命令更加动态,适应不同场景。

 

下载文件

使用以下命令下载文件curl,您只需提供资源的 URL:


$ curl http://example.com/file.txt -o localfile.txt
  

使用此命令,您可以从“example.com”下载“file.txt”并将其保存为本地计算机上的“localfile.txt”。这-oflag 允许您指定保存文件的名称。

始终确保使用-o标志来定义本地文件名,确保您不会覆盖其他文件。

阅读更多关于如何使用curl命令下载文件.

 

上传文件

您可以使用 HTTP PUT 或 POST 方法将文件上传到服务器。

对于 PUT 方法:


$ curl -T localfile.txt http://example.com/upload/
  

在这里,您使用 HTTP PUT 方法将“localfile.txt”上传到指定的 URL。

对于 POST 方法:


$ curl -F "data=@localfile.txt" http://example.com/upload/
  

此命令使用 HTTP POST 方法上传“localfile.txt”。-F将curl 信号发送为multipart/form-data 形式的POST 数据。

字符串“data=@localfile.txt”表示将文件的内容作为“data”参数的值发布。

上传时,请确保您拥有适当的权限并了解服务器期望的方法(PUT 或 POST)。

 

使用 POST 提交表单

提交表格是一项常见任务。和curl,您可以轻松模拟表单提交。


$ curl -d "username=john&password=12345" http://example.com/login
  

此命令向“example.com/login”提交 POST 请求,提供的数据为“application/x-www-form-urlencoded”

The -d旗帜告诉curl在 POST 请求正文中发送数据。

确保正确编码传输数据,特别是当数据包含特殊字符时。

 

使用其他 HTTP 方法

curl可以利用各种 HTTP 方法,而不仅仅是 GET 和 POST。


$ curl -X HEAD http://example.com
  

此命令使用 HEAD 方法从“example.com”获取标头。这-Xflag 指定 HTTP 方法。

对于删除方法:


$ curl -X DELETE http://example.com/resource/1
  

此命令发送 DELETE 请求以删除“example.com”上的资源。

 

使用 cURL 进行身份验证

有时,资源受到保护并需要身份验证。


$ curl -u username:password http://example.com/protected
  

此命令使用提供的用户名和密码通过基本身份验证向“example.com/protected”发送请求。这-u标志后跟凭据是允许此身份验证的。

使用此方法时请务必小心。以明文形式传输凭据可能存在安全风险,尤其是在未加密的连接上。

阅读更多关于使用 Linux curl 命令处理身份验证方法.

 

制作自定义标头和用户代理

您可能需要发送自定义标头或更改用户代理。


$ curl -H "X-Custom-Header: customvalue" -A "MyUserAgent/1.0" http://example.com
  

这将使用自定义标头和自定义用户代理向“example.com”发送请求。

The -H标志设置自定义标头,并且-A标志设置用户代理。

自定义标头对于需要特定信息的 API 或服务非常有用,而更改用户代理可以帮助模拟不同的设备或浏览器。

 

操作 Expect: 标头

有时,当发送负载较大的 POST 请求时,curl发送“期望:100-继续”标头。要显式控制此行为:


$ curl -H "Expect:" -d "large_data_payload" http://example.com/upload
  

通过将“Expect:”标头设置为空,您可以有效地禁用默认行为,从而允许立即传输数据而无需等待服务器确认。

当处理不能优雅地处理“Expect: 100-continue”的服务器时,这种操作可能至关重要。

 

处理压缩响应

许多服务器压缩其响应以节省带宽。curl可以自动为您解压这些回复。


$ curl --compressed http://example.com/resource
  

通过使用--compressed选项,如果服务器响应包含使用 gzip 或 deflate 编码的内容,curl会自动解压。

此选项可确保您收到的数据立即可读和可用。

 

以下重定向

服务器可以将请求重定向到其他 URL。使curl请遵循以下重定向:


$ curl -L http://example.com/redirect
  

使用-L or --location标志指示curl遵循服务器发送的任何重定向。

使用此选项时请务必注意,因为盲目地遵循重定向可能会导致您到达意想不到的目的地。

 

使用 cookie 和会话

Cookie 对于维持会话或保留跨请求的某些首选项至关重要。


$ curl -c cookies.txt -b cookies.txt http://example.com/login
  

Here, -c cookies.txt tells curl将 cookie 保存到文件“cookies.txt”。这-b cookies.txt指示curl从同一文件中读取和发送 cookie 以用于后续请求。

正确管理 cookie 可确保与需要会话持久性的站点进行无缝交互。

阅读更多内容使用 Linux curl 命令管理 cookie.

 

cURL 和 API

API 通常需要特定的标头、方法或数据格式。curl是与他们互动的宝贵工具。


$ curl -H "Authorization: Bearer YOUR_API_TOKEN" -H "Content-Type: application/json" -d '{"key":"value"}' http://api.example.com/data
  

这会向 API 端点发送一个 POST 请求,其中包含授权标头和 JSON 负载。

多重-H标志允许设置所需的标头。

使用 API 时,请确保使用 API 所需的正确标头、方法和数据格式。

阅读更多关于使用 Curl 命令的 RESTful API 交互.

 

SSL/TLS 和证书验证

默认情况下,curl验证服务器的 SSL 证书。


$ curl https://secured-example.com
  

如果服务器的证书有问题,curl会产生错误。

但是,在某些情况下,例如测试或内部网络,您可能会遇到自签名证书。绕过验证:


$ curl -k https://internal-server
  

The -k or --insecure选项禁用 SSL 证书验证。请谨慎使用此选项,并且仅在受信任的环境中使用。

阅读更多关于使用curl命令的SSL/TLS.

 

在代理后面使用curl

如果您在代理后面操作,curl可以配置使用它:


$ curl -x http://proxyserver:port https://example.com
  

The -x标志后跟代理详细信息通知curl通过指定的代理路由其请求。

 

设置自定义 DNS 服务器

如果您想要的话curl使用特定的解析主机名DNS服务器:


$ curl --resolve example.com:80:1.2.3.4 http://example.com
  

Here, curl将在端口 80 上使用“example.com”的 IP 地址“1.2.3.4”。这对于测试或绕过 DNS 相关问题很有用。

确保您信任指定的 DNS 服务器,以防止潜在的重定向攻击。

 

为多个请求重用连接

当多次访问同一服务器时,您可以重用连接:


$ curl -H "Connection: keep-alive" http://example.com/page1 -o page1.html
$ curl -H "Connection: keep-alive" http://example.com/page2 -o page2.html
  

“Connection: keep-alive”标头发出信号,使 TCP 连接保持开放状态以供将来的请求,从而减少开销。

保持活动状态对于与同一服务器重复交互的脚本或自动化任务特别有用。

 

限制下载/上传速度

限制使用的带宽curl:


$ curl --limit-rate 100K -O http://example.com/largefile.zip
  

这将下载速率限制为每秒 100 KB。这--limit-rate选项后跟速度(如 100K 或 500K)设置限制。

当需要网络带宽时,限制速度可能很有用。

 

使用curl进行FTP传输

curl支持FTP并允许您上传和下载文件。


$ curl -u ftpuser:ftppass -O ftp://ftp.example.com/file.zip
  

此命令从以下位置下载“file.zip”FTP服务器使用提供的凭据。

用于上传:


$ curl -u ftpuser:ftppass -T localfile.zip ftp://ftp.example.com/
  

这会将“localfile.zip”上传到 FTP 服务器。

 

显示响应标头

查看服务器返回的标头:


$ curl -I http://example.com
  

The -I选项仅获取标头。检查元数据、cookie 或其他标头相关信息很有用。

此方法可帮助您了解服务器响应,而无需获取整个内容。

 

IPv6 和卷曲

curl全面支持IPv6。通过 IPv6 发出请求:


$ curl http://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]/
  

括号用于封装 URL 中的 IPv6 地址。

发出此类请求时,请确保您的网络基础设施支持 IPv6。

 

使用curl流式传输数据

curl可以流式传输数据,对于查看日志或持续的数据源很有用:


$ curl -N http://example.com/streaming-data
  

The -Nflag 关闭缓冲,允许数据直接流式传输到您的控制台。

进行流式传输时,请始终监控接收到的数据量,以确保它不会淹没您的系统或网络。

 

使用 .curlrc 作为默认设置

对于经常使用的选项,您可以在中设置默认值.curlrc您的主目录中的文件:

示例 .curlrc 内容:


--compressed
--user-agent "MyUserAgent/1.0"
  

有了这个文件,curl将始终使用--compressed选项并默认设置指定的 User-Agent。

定制.curlrc可以节省时间并保证重复操作的一致性。

 

电信危机中 Curl 的魔力

我接到一家顶级电信运营商发来的求救电话。

他们的系统遇到了重大问题:大部分预付费客户无法为他们的账户充值,导致广泛的不满。
问题?他们用来与支付网关通信的应用程序出现故障,他们需要一种快速的方法来验证问题是来自他们的一端还是网关的一端。

该公司当前的工具链需要登录系统、运行多个脚本、等待批处理、然后获取日志的复杂过程。

仅提取一名用户的数据大约需要 20 分钟。鉴于他们想要验证 500 个用户的数据作为样本,我们考虑了大约 166 小时的连续工作。在这种情况下这是一项不切实际的任务。

熟悉公司的API后,我建议使用curl命令绕过有问题的应用程序,直接与支付网关通信。

通过在 bash 中编写循环脚本并使用curl,我可以以编程方式发送 HTTP 请求并立即获得响应反馈。
这是我所做的简化版本:


#!/bin/bash
for user in $(cat user_list.txt); do
    curl -X POST https://gateway.example.com/topup -d "userid=$user&amount=50" >> results.txt
done
  

实施curl解决方案后:

每个用户的整个过程大约需要 30 秒,比最初的 20 分钟有了显着的改进。 4 小时内,我们获得了所有 500 位用户的结果。时间缩短了 97.6%!

分析results.txt显示网关正确响应了我们的请求,表明问题确实存在于公司的应用程序中。

 

资源

https://curl.se/docs/manpage.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux curl 命令:来自 Shell 的 Web 交互 的相关文章

  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有
  • 为什么我的 Dockerfile CMD 不起作用?

    所以在我的 Dockerfile 的末尾我有这样的内容 WORKDIR home CMD django admin startproject whattt CMD bin bash 当我创建映像然后运行容器时 一切都按预期运行 没有错误 D
  • 使用 posix_spawn 启动进程

    我正在使用以下代码在 Linux 中启动新进程 pid t processID char argV 192 168 1 40 char 0 int status 1 status posix spawn processID home use
  • 推荐用于小型站点的 IRC 服务器 (ircd)? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 情况 我想使用 IRC 机器人作为我正在研究的其他代码的通用通信接口 服务器硬件陈旧且内存不足 但运行在相对最新的 Debian GNU
  • 这种 bash 文件名提取技术有何用途?

    我有一部分 bash 脚本正在获取不带扩展名的文件名 但我试图了解这里到底发生了什么 是做什么用的 有人可以详细说明 bash 在幕后做了什么吗 如何在一般基础上使用该技术 bin bash for src in tif do txt sr
  • 找出 Linux 上的默认语言

    有没有办法从C语言中找出Linux系统的默认语言 有 POSIX API 可以实现这个功能吗 例如 我想要一个人类可读格式的字符串 即德语系统上的 German 或 Deutsch 法语系统上的 French 或 Francais 等 有类
  • Linux“屏幕”的 Windows 等效项还是其他替代方案?

    我正在寻找一种在 Windows 环境中控制程序的方法 我希望它与 Linux 软件有点相似 screen 我搜索的原因是我需要使用标识符启动一个程序 在 Windows 上 这样我以后就能够关闭该特定程序 而无需关闭其他任何程序 即使实际
  • 在 Linux 上创建线程与进程的开销

    我试图回答在 python 中创建线程与进程有多少开销的问题 我修改了类似问题的代码 该问题基本上运行一个带有两个线程的函数 然后运行带有两个进程的相同函数并报告时间 import time sys NUM RANGE 100000000
  • 如何设置Java线程的CPU核心亲和力?

    我搜索了以前关于类似主题的帖子 但找不到合适的答案 因此提出这个问题 非常感谢您帮助回答 我知道在 Linux 中通过任务集命令设置进程与特定 CPU 核心的关联性 但我想设置 Java 线程与特定 cpu 核心的亲和力 以便属于同一进程的
  • 如何从远程 ssh 连接上运行的 tmux(复制模式)复制到本地剪贴板

    我通过 OS X 上的 VirtualBox 运行 Linux 我通过在无头状态下运行虚拟机 然后使用端口转发 sshing 到 Linux 机器来实现这一点 现在 无论复制到我的虚拟机上的剪贴板 我都可以粘贴到我的远程 ssh 会话上 但
  • 如何在 Linux/OS X 上温和地终止 Firefox 进程

    我正在使用 Firefox 进行一些自动化操作 尽管我可以从 shell 打开 Firefox 窗口 但我无法正确终止它 如果我kill火狐进程与kill 3 or kill 2当我下次打开新的 Firefox 窗口时 命令会询问我是否要在
  • 使用c在linux上分块读写

    我有一个 ASCII 文件 其中每一行都包含一个可变长度的记录 例如 Record 1 15 characters Record 2 200 characters Record 3 500 characters Record n X cha
  • 裸机交叉编译器输入

    裸机交叉编译器的输入限制是什么 比如它不编译带有指针或 malloc 的程序 或者任何需要比底层硬件更多的东西 以及如何才能找到这些限制 我还想问 我为目标 mips 构建了一个交叉编译器 我需要使用这个交叉编译器创建一个 mips 可执行
  • 为什么docker容器提示“权限被拒绝”?

    我使用以下命令来运行 docker 容器 并从主机映射目录 root database 到容器 tmp install database docker run it name oracle install v root database t
  • SMP 上如何处理中断?

    SMP 对称多处理器 多核 机器上如何处理中断 内存管理单元是只有一个还是多个 假设两个线程 A 和 B 运行在不同的内核上 同时 访问页表中不存在的内存页面 在这种情况下 将会出现页面错误 并从内存中引入新页面 将会发生的事件的顺序是什么
  • 在非实时操作系统/内核上执行接近实时任务的最佳方法是什么?

    在一台 GNU Linux 机器上 如果想要执行 实时 亚毫秒级时间关键 任务 您几乎总是必须经历漫长 复杂且容易出现问题的内核补丁过程 以提供足够的支持 1 http en wikipedia org wiki RTLinux Backg
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam
  • pthread_self() 返回的线程 ID 与调用 gettid(2) 返回的内核线程 ID 不同

    这句话来自于pthread self 的手册页 http linux die net man 3 pthread self 那么 我应该根据什么来决定是否应该使用pthread self or gettid确定哪个线程正在运行该函数 两者都
  • php_network_getaddresses: getaddrinfo 失败: 名称或服务未知 (0) 连接失败..!

    我正在使用 php 邮件程序功能 但出现以下错误 如何修复它 2016 01 22 06 15 48 SMTP 错误 无法连接到服务器 php network getaddresses getaddrinfo失败 名称或服务未知 0 连接失
  • 在用户程序中使用 或在驱动程序模块代码中使用 ...这有关系吗?

    我正在开发一个设备驱动程序模块和关联的用户库来处理ioctl 来电 该库获取相关信息并将其放入一个结构中 该结构被传递到驱动程序模块中并在那里解压 然后进行处理 我省略了很多步骤 但这就是总体思路 一些数据通过结构体传递ioctl is u

随机推荐

  • 如何在 WordPress 中禁用附件评论

    许多垃圾邮件发送者会针对您的 WordPress 网站上的媒体附件进行评论 您可以通过使用 WordPress 插件或在主题文件中添加自定义 PHP 代码来禁用媒体附件上的评论 下面介绍了两种禁用媒体附件评论的方法 Read 如何在 Wor
  • 如何在 CentOS 8 上安装 Laravel 9

    Laravel 是一个功能强大的开源 PHP Web 框架 专为更快地开发 Web 应用程序而设计 它基于Symfony框架 遵循MVC架构模式 在本教程的最近更新期间 Laravel 9 是可用的最新版本 Laravel 框架还提供了一个
  • 如何在 Ubuntu 18.04 和 16.04 上安装 Nginx

    Nginx 是 Apache HTTP Server 之外的另一个最受欢迎的 Web 服务器 它被全球大量流行网站使用 该网络服务器对于大流量网站非常有用 本教程将帮助您使用 apt get 在 Ubuntu 18 04 和 16 04 上
  • 使用 PHPMailer 发送电子邮件

    电子邮件发送功能是许多 Web 应用程序的重要组成部分 从帐户验证电子邮件到忘记密码提醒 电子邮件有助于在您的应用程序与其用户之间建立沟通桥梁 PHPMailer 是从 PHP 应用程序发送电子邮件的最流行的库之一 它具有许多功能 使其成为
  • 如何在 Ubuntu 18.04 LTS 上安装 Swift

    Swift 是一种安全 快速 富有表现力的通用编程语言 专为软件设计模式而构建 它最适合系统编程 移动和桌面应用程序 Swift 提供了大量功能 使编程变得更加容易 同时为开发人员提供了真正的系统编程语言所需的控制能力 本教程将帮助您在 U
  • 解决 MySQL 错误 1041 (HY000):内存不足

    在使用 MySQL 时 您可能偶尔会遇到以下情况 错误 1041 HY000 内存不足错误 此错误表明 MySQL 服务器 mysqld 在尝试执行操作时内存不足 此类问题可能有点令人困惑 特别是如果您的服务器似乎有足够的可用内存 让我们深
  • 什么是 500 内部服务器错误

    浏览网页时最常见的错误之一是 500 内部服务器错误 此消息表明网络服务器遇到技术问题 本文解释了 500 错误的含义 为什么会收到 HTTP 500 代码以及如何解决这些错误 什么是 HTTP 500 错误 每次打开网页时 浏览器都会向托
  • Linux 中的 Basename 命令

    basename是一个命令行实用程序 可以从给定的文件名中删除目录和尾随后缀 使用basename命令 The basename命令支持两种语法格式 basename NAME SUFFIX basename OPTION NAME bas
  • 如何在 Linux 上创建可启动的 Ubuntu U 盘

    在本教程中 我们将向您展示如何从 Linux 终端创建可启动的 Ubuntu U 盘 您可以使用此 U 盘来启动并测试或在任何支持从 USB 启动的计算机上安装 Ubuntu 先决条件 4GB 或更大的 USB 记忆棒驱动器 运行任何 Li
  • 如何在 Ubuntu 20.04 上安装 Odoo 14

    Odoo 是一款流行的开源商业应用程序套件 可帮助公司管理和运营其业务 它包括广泛的应用程序 例如 CRM 电子商务 网站构建器 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo根据使用案例和可用技术 可以以不同的方
  • Linux 中的 Ping 命令

    The ping命令是最常用的用于故障排除 测试和诊断网络连接问题的工具之一 Ping 的工作原理是向网络上指定的目标 IP 发送一个或多个 ICMP 互联网控制消息协议 回显请求包 并等待回复 当目的地收到数据包时 它会使用 ICMP 回
  • Linux 中的 Gzip 命令

    Gzip 是最流行的压缩算法之一 它允许您减小文件的大小并保留原始文件模式 所有权和时间戳 Gzip 还指 gz文件格式和gzip用于压缩和解压缩文件的实用程序 在本教程中 我们将向您展示如何使用gzip命令 gzip命令语法 的一般语法为
  • 如何在 Debian 10 上安装 Skype

    Skype是世界上最流行的通信应用程序之一 它允许您免费拨打在线音频和视频电话 并以经济实惠的价格拨打全球手机和固定电话 本文介绍如何在 Debian 10 Linux 上安装最新版本的 Skype 在 Debian 上安装 Skype S
  • 如何在 Ubuntu 20.04 上安装 PHP

    PHP 是最常用的服务器端编程语言之一 许多流行的 CMS 和框架 例如 WordPress Magento 和 Laravel 都是用 PHP 编写的 本指南介绍了在 Ubuntu 20 04 上安装 PHP 并将其与 Nginx 和 A
  • 如何在 Ubuntu 中更改用户密码

    定期更新密码并为每个帐户使用唯一的密码始终是个好主意 作为 Ubuntu 中的普通用户 您只能更改自己的密码 root 用户和具有 sudo 权限的用户可以更改其他用户的密码并定义如何使用或更改密码 本教程介绍如何从命令行或通过 Ubunt
  • 如何在 Ubuntu 20.04 上安装 Nginx

    Nginx 发音为 engine x 是一个开源 高性能的 HTTP 和反向代理服务器 负责处理互联网上一些最大站点的负载 它可以用作独立的 Web 服务器 负载均衡器 内容缓存和反向代理适用于 HTTP 和非 HTTP 服务器 与 Apa
  • 如何在 CentOS 7 上安装 Tomcat 9

    Tomcat 是 Java Servlet JavaServer Pages Java 表达式语言和 Java WebSocket 技术的开源实现 本教程介绍了在 CentOS 7 上安装 Tomcat 9 0 所需的步骤 先决条件 您登录
  • 如何使用 nmap 命令

    Nmap 是一款功能强大的网络扫描工具 用于安全审计和渗透测试 它是网络管理员用来解决网络连接问题和解决问题的基本工具之一端口扫描 Nmap还可以检测Mac地址 OS type 服务版本等等 本文介绍了如何使用的基础知识nmap命令来执行各
  • 在 Linux 中安装、配置和保护 FTP 服务器

    FTP或文件传输协议是计算机之间传输文件的常用协议 一个充当客户端 另一个充当服务器 在这篇文章中 我们将讨论 Linux 系统中的 FTP 服务器 特别是 Very Secure FTP Daemon vsftpd vsftpd 程序是当
  • Linux curl 命令:来自 Shell 的 Web 交互

    curl是一个功能强大的命令 可让您将数据传输到服务器或从服务器传输数据 它支持多种协议 并且无需用户交互即可处理各种与网络相关的任务 目录 hide 1 安装卷曲 2 支持的协议 3 URL 通配符