【转载】curl的简介和使用

[[Linux]] [[cURL]] 【转载】curl的简介和使用 本文转载自curl网站开发指南,做了很小的改动,遵从自由转载原则。 What’s curl used for? curl is used in command lines or scripts to transfer data. It is also used in cars, television sets, routers, printers, audio equipment, mobile phones, tablets, settop boxes, media players and is the internet transfer backbone for thousands of software applications affecting billions of humans daily. curl是一个被用在命令行或者脚本中,用来传输数据的工具。它还被运用于 🚗 上,📺 上,路由器上,🖨️ 上,音响设备上,📱 上,平板电脑上,机顶盒上,媒体播放器上,以及数以万计,影响着上百万年的人们日常生活的基于网络的软件。 curl 是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。 它支持多种协议,下面举例讲解如何将它用于网站开发。 一、查看网页源码 直接在 curl 命令后加上网址,就可以看到网页源码。我们以网址 www.sina.com 为例(选择该网址,主要因为它的网页代码较短): $ curl www.sina.com ...

【转载】Linux(Ubuntu)网络流量实时监控(iftop)

Linux Network Monitoring 【转载】Linux(Ubuntu)网络流量实时监控(iftop) 在类 Unix 系统中可以使用 top 查看系统资源,进程,内存占用等信息。查看网络状态可以使用netstat、nmap 等工具。 若要查看实时的网络流量,监控 TCP/IP 连接,反向解析 IP,显示端口信息等,则可以使用 iftop。 1、安装 $ sudo apt-get install iftop 2、命令说明 语法: iftop -h | [-npblNBP] [-i interface] [-f filter code] [-F net/mask] [-G net6/mask6] -h 显示本帮助(Help)信息 -n 不进行主机名(hostName)查找 -N 不将端口号(port Number)转换成对应的服务 to services -p 混合(Promiscuous)模式(显示网络相关的其他主机信息) -b 不显示流量图形条(Bar) -B 以字节(Byte)为单位,显示带宽(Bandwidth);默认以比特(bit)显示的 -i interface 监控的网卡接口(interface) -f filter code 包统计时,使用过滤码;默认:无,只统计IP包 -F net/mask 显示特定IPv4网段的进出流量(Flow);如# iftop -F 10.10.1.0/24 -G net6/mask6 显示特定IPv6网段的进出流量(Flow) -l 显示并统计IPv6本地(Local)链接的流量(默认:关) -P 显示端口(Port) -m limit 设置显示界面上侧的带宽刻度(liMit) -c config file 指定配置(Config)文件 -t 使用不带窗口菜单的文本(text)接口 排序: -o 2s Sort by first column (2s traffic average) -o 10s Sort by second column (10s traffic average) [default] -o 40s Sort by third column (40s traffic average) -o source Sort by source address -o destination Sort by destination address The following options are only available in combination with -t -s num print one single text output afer num seconds, then quit -L num number of lines to print 3、界面说明 204Mb 407Mb 611Mb 814Mb 0.99Gb └─────────────────────────┴─────────────────────────┴──────────────────────────┴─────────────────────────┴────────────────────────── bond-test => 192.168.1.103 1.44Mb 1.38Mb 0.99Mb <= 336Mb 327Mb 315Mb bond-test => 192.168.1.101 0b 0b 0b <= 295Mb 218Mb 244Mb bond-test => 192.168.1.140 10.1Kb 11.0Kb 10.8Kb <= 0b 0b 0b bond-test => 192.168.1.102 0b 0b 703Kb <= 0b 0b 0b bond-test => xxxxxxxxx 0b 0b 31b <= 0b 0b 31b ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── TX: cum: 12.3MB peak: 2.87Mb rates: 1.45Mb 1.39Mb 1.68Mb RX: 3.52GB 692Mb 631Mb 545Mb 560Mb TOTAL: 3.53GB 694Mb 632Mb 546Mb 561Mb 界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。 ...

arp 实现网络传输速率倍增

Linux Network arp 实现网络传输速率倍增 测试目标 最近想要突破千兆交换机给定的极限,尝试过 bond6 实现,发现还是需要万兆交换机支持。 换个思路,先确定下目前的需求是什么: 一个主节点,配置了五个网口,每个网口配置一个 ip,定义为 192.168.1.1-5 五个普通节点,分别有一个网口且分配一个 ip,定义为 192.168.1.11-15 现在想达到的目标是: - 五个普通节点分别向主节点的不同 ip 发数据,使得主节点的网络吞吐(进口)达到 5000 Mb/s - 五个普通节点分别要求从主节点的不同 ip 取数据,使得主节点的网络吞吐(出口)达到 5000 Mb/s 测试方案也很简单,就是讲一个大文件通过 scp 传递或者要求接收的方式判断网络吞吐。 直观来看,这两个目标很容易达到,虽然连接在千兆交换机上,但是主节点连了五根线,理论可以达到 5000 Mb/s的。 实际测试过程 定义几个概念: 主节点称为 m 主节点的网口带上数字,记为 m1-m5 普通节点称为 s,五个即 s1-25 普通节点只有一个网络端口,所以网口和普通节点同名 定义两个测试过程: s1-s5 分别向 m1-m5 发送数据,记为实验一 s1-s5 分别要求 m1-m5 发送数据,记为实验二 实验结果是: 实验一的结果是,五个发送请求的带宽总和是 3000Mb/s 实验二的结果是,五个拉取请求的带宽总和是 1000Mb/s 这个结果令我有些不解,开始用工具监控数据,但不再聚焦于五个普通节点,而是专门去监控主节点的五个网口。 分析过程 主节点的五个网口的数据,实验一中,m1:1000,m2:1000,m3:3000,m4:0,m5:0;实验二中m3:1000,其他都是0。 分析到这里能解释实验现场,但是根本原因还不明确,往底层去看,可能是网络层和链路层的问题,随之想到了 arp 协议。 arp 协议定义了 ip 和 mac 地址的关系,先查下每台机器的 arp 信息,下面是大致的信息: ...

Ubuntu 使用光纤设备遇到的问题

Linux Ubuntu Network Ubuntu 使用光纤设备遇到的问题 已有的设备: 一台全新的带有光口的交换机 普通服务器(无光模块) 不知生产日期的 8Gb/s 的光网卡 不知生产日期的 8Gb/s 的光模块 几根 LC-LC 光纤线 该接的线都接了,连上机器发现根本没识别网卡,光模块上的三个灯一直闪烁,我寻思👴没用过光纤,这到底该怎么排查呢。根据这篇文档进行操作。 识别 HBA 卡 # lspci | grep -i ql <== 由于lspci显示连接的pci设备过多,通过grep查找 82:01.0 Ethernet controller: QLogic Corp. ISP4032-based Ethernet IPv6 NIC 82:01.1 Network controller: QLogic Corp. ISP4032-based iSCSI TOE IPv6 HBA 查看是否有驱动 # lsmod | grep -i ql qla2xxx 260462 0 iscsi_boot_sysfs 16000 1 qla2xxx libiscsi 57278 4 qla2xxx,libiscsi_tcp,iscsi_tcp,ib_iser scsi_transport_iscsi 89279 5 qla2xxx,iscsi_tcp,ib_iser,libiscsi 驱动可能有点老,但毕竟也加载了。 查看使用信息 祭出 dmesg。 $ dmesg | grep -i ql xxxxxx xxxxxx xxxxxxx cable unplugged 电缆不通电?继续查,都是说线没插好或者驱动有问题。重新安装驱动再重启网络服务,无效。 ...

Ubuntu 安装 ftp 服务

Linux Ubuntu Network Ubuntu 安装 ftp 服务 这是一个很简单的需求,相关的博文也相当多,安装的过程非常简单,但是配置相关的说明有些分散。 主要几步: 可选:创建目录 安装服务 写配置文件 访问服务 最麻烦的在于 写配置文件,ftp 通过文本格式的配置文件实现了权限管理,用户管理,目录管理和网络管理。 安装服务 $ apt-get install vsftpd vsftpd 意思为 “very secure FTP daemon(非常安全的FTP进程)”,当然只有更安全没有最安全。 那它到底安全在哪里呢,主要体现在以下两点: 权限控制,vsftpd 以一般用户登录,用户权限相对较小,对于系统就越安全,对于用户需要的系统级指令大部分被整合到 vsftpd 中了,用户不需要申请更高权限就足以完成绝大部分 ftp 指令;此外对于 ftp 本身内部的读写控制,vsftpd 也足以通过配置文件控制了; 目录限制,vsftpd 通过 chroot 可以控制 ftp 登录用户所能看到的目录范围,即限定 ftp 用户看到的根目录为系统中某一个目录,如此一个 ftp 用户就除了看到自己的 ftp 根目录不能看到其他比如配置文件、系统更目录等,保护了系统。 写配置文件 从安全的角度来看,尽量不要启用匿名;同时尽量使用一个统一的目录,方便管理(这样的考虑是因为将 ftp 作为一个统一的文件传输管理系统,如果每个用户单独目录就很难提到共享这个概念)。 还有个 主动模式/被动模式 的区别,具体的区别可以参考 Ubuntu 14.04 配置vsftpd实现FTP服务器 - 通过FTP连接AWS 的第 2 章。我的需求是使用被动模式。 从上述所说,重要的配置如下: anonymous_enable=NO # 不允许匿名用户登录 local_enable=YES # 允许本地用户组的用户登录 write_enable=YES # 允许本地用户上传文件 local_root = /home/xxxx/ftp # 本地用户登入时,将被切换到定义的目录下,默认值为各用户的家目录,通过这个指定目录,该目录需要手动创建 #使用被动模式 pasv_enable=YES pasv_min_port=1024 pasv_max_port=1048 pasv_address=你的访问IP(服务器外网IP) 更多的配置信息可以参考文末的参考链接前两项。 ...