Linux系统运维常用命令(2)

238 阅读21分钟

5、系统信息查询命令(11个) uname 显示操作系统相关信息。 hostname 显示或者设置当前系统的主机名。 dmesg 显示开机信息,用于诊断系统故障。 uptime 显示系统运行时间以及负载。 stat 显示文件或文件系统的状态。 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) dmidecode -q 显示硬件系统部件 (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /proc/meminfo 校验内存使用 cat /proc/swaps 显示哪些swap被使用 cat /proc/version 显示内核的版本 cat /proc/net/dev 显示网络适配器及统计 cat /proc/mounts 显示已加载的文件系统 lspci -tv 罗列 PCI 设备 lsusb -tv 显示 USB 设备

top 实时显示系统资源使用情况。 free 查看系统内存 date 显示、设置系统时间 cal 查看日历、时间信息 cal 2021 显示2021年的日历表 date 041217002021.00 设置日期和时间 - 月日时分年.秒 clock -w 将时间修改保存到 BIOS

6、用户管理及权限、用户授权,登陆相关命令(21个) useradd 添加用户。 添加一个tom用户,设置它属于users组,并添加注释信息:useradd -g users -c "hr tom" tom useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 “admin” 用户组的用户

usermod 修改系统已经存在用户属性。 修改tom用户的登陆名为tomcat:usermod -l tomcat tom

将tomcat添加到sys和root组(-G,-g)中:usermod -G sys,root tomcat 查看tomcat的组信息:groups tomcat usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性

userdel 删除用户。 userdel -r spark 加一个-r就表示把用户及用户的主目录都删除

groupadd 添加用户群组+groupmod组修改 passwd 修改用户密码。 chage 修改用户密码有效期限。 id 查看用户的uid/gid及归属的用户群组

groupmod -n new_group_name old_group_name 重命名一个用户组

chmod 改变文件、目录权限 chmod -R 770 aaa/ ##如果要将一个文件夹的所有内容权限统一修改,则可以-R参数 chmod ugo+rwx directory1 ##设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限 chmod go-rwx directory1 ##删除群组(g)与其他人(o)对目录的读写执行权限

find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件 chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限 chmod u-s /bin/file1 禁用一个二进制文件的 SUID位 chmod g+s /home/public 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的 chmod g-s /home/public 禁用一个目录的 SGID 位 chmod o+t /home/public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件 chmod o-t /home/public 禁用一个目录的 STIKY 位 chgrp 更改文件用户群组。

chown 改变文件、目录的属主和属组 chown :angela aaa ## 改变所属组 chown angela:angela aaa/ ## 同时修改所属用户和所属组 chown -R user1 directory1 ##改变一个目录的所有人属性并同时改变改目录下所有文件的属性

umask 显示、设置权限掩码。 whoami 显示当前有效用户名称,相当于执行id -un命令。 who 显示目前已登录系统的用户信息。 w 显示已登陆系统的用户列表,并显示用户正在执行的指令。 last 显示已登入系统的用户。 lastlog 显示系统中所有用户最近一次的登录信息。 users 显示当前登录系统的所有用户的用户列表。 finger 查找、显示用户信息。

gpasswd 将tomcat用户从root组和sys组删除:gpasswd -d tomcat root&&gpasswd -d tomcat sys 将america组名修改为am:groupmod -n am america

chattr 配置文件的特殊属性 - 使用 “+” 设置权限,使用 “-” 用于取消 chattr +a file1 只允许以追加方式读写文件 chattr +c file1 允许这个文件能被内核自动压缩/解压 chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件 chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接 chattr +s file1 允许一个文件被安全地删除 chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘 chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件 lsattr 显示特殊的属性

为用户配置sudo权限 su 切换用户身份。 visudo 编辑/etc/sudoers文件的专属命令。 sudo 以另外一用户身份(默认为root用户)执行事先在sudoers文件中允许的命令。 1 2 3 用root编辑 vi /etc/sudoers;不过现在默认都用visudo命令来编辑文件,在文件的如下位置,为hadoop添加一行即可

root ALL=(ALL) ALL hadoop ALL=(ALL) ALL

然后,hadoop用户就可以用sudo来执行系统级别的指令

验证:切换到授权的用户下,执行:sudo -l 来查看哪些命令是可以执行或禁止的;

sudo -v //可更新sudo切换后的时间戳,不至于过期

/etc/sudoers中每行就算一个规则,带有#号可以当作是说明的内容,不会执行;如果规则很长,一行列不下时,可以用\号来续行,这样一个规则就可以有多个行;/etc/sudoers 的规则可分为两类;一类是别名定义,另一类是授权规则;别名定义并不是必须的,但授权规则是必须的;

别名规则定义格式如下:

Alias_Type NAME = item1, item2, ...

或如下这样

#Alias_Type NAME = item1, item2, item3 : NAME = item4, item5 //别名之间用:号分割;

##别名类型(Alias_Type):别名类型包括如下四种

#Host_Alias 定义主机别名; 用于在下文定义授权规则时通过该定义主机别名来限制特定一组主机,否则就需要用ALL来匹配所有可能出现的主机情况 #User_Alias 用户别名,别名成员可以是用户,用户组(前面要加%号),成员与成员之间,通过半角,号分隔;;且需要在系统中确实在存在的,即;在/etc/paswd中必须存在 #Runas_Alias 用来定义runas别名,这个别名指定的是“目的用户”,即sudo 允许切换至的用户; 定义的是某个系统用户可以sudo 切换身份到Runas_Alias 下的成员 #Cmnd_Alias 定义命令别名;注意:命令别名下的成员必须是文件或目录的绝对路径; 别名长的话,可以通过 \ 号断行;

Cmnd_Alias USERMAG=/usr/sbin/adduser,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,/bin/chown,/bin/chmod Cmnd_Alias DISKMAG=/sbin/fdisk,/sbin/parted Cmnd_Alias NETMAG=/sbin/ifconfig,/etc/init.d/network Cmnd_Alias KILL = /usr/bin/kill Cmnd_Alias PWMAG = /usr/sbin/reboot,/usr/sbin/halt Cmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \ /usr/local/bin/tcsh, /usr/bin/rsh, \ /usr/local/bin/zsh Cmnd_Alias SU = /usr/bin/su,/bin,/sbin,/usr/sbin,/usr/bin

##授权规则语法:授权用户 主机=命令动作,在动作之前也可以指定切换到特定用户下,在这里指定切换的用户要用括号括起来,如果不需要密码直接运行命令的,应该加NOPASSWD:参数 ZQadmin ALL=/bin/chown,/bin/chmod ##表示ZQadmin可以在任何可能出现的主机名的系统中,可以切换到root用户下执行/bin/chown 和/bin/chmod 命令;这里省略了指定切换到哪个用户下执行/bin/shown 和/bin/chmod命令;在省略的情况下默认为是切换到root用户下执行;同时也省略了是不是需要ZQadmin用户输入验证密码,如果省略了,默认为是需要验证密码。

#因此授权规则可以这样写:授权用户 主机=[(切换到哪些用户或用户组)] [是否需要密码验证] 命令1,[(切换到哪些用户或用户组)] [是否需要密码验证] [命令2],[(切换到哪些用户或用户组)] [是否需要密码验证] [命令3]...... //[ ]中的内容,是可以省略;命令与命令之间用,号分隔; ZQadmin ALL=(root) NOPASSWD:/bin/chown, /bin/chmod ##//执行chown不需输入密码,执行chmod时需要ZQadmin输入自己的密码 %admin ALL=/usr/sbin/,/sbin/ ##表示admin用户组下的所有成员,在所有可能的出现的主机名下,都能切换到root用户下运行 /usr/sbin和/sbin目录下的所有命令; wangju ALL=/usr/sbin/,/sbin/,!/usr/sbin/fdisk #//表示wangju用户在所有可能存在的主机名的主机上运行/usr/sbin和/sbin下所有的程序,但fdisk 程序除外;

#按别名来建立规则,b写明首位必须为大写字母,其后可跟下划线和数字 User_Alias SYSADER=admin,linuxsir,%admin User_Alias DISKADER=lanhaitun Runas_Alias OP=root #/定义要临时su的目标用户的别名为OP,实际成员为root Cmnd_Alias SYUCMD=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root #/不能通过passwd 来更改root密码; Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk #注:定义命令别名DSKCMD,下有成员parted和fdisk ;

定义别名规则

SYSADMIN ALL= SYUCMD,DSKCMD #/admin、linuxsir和admin用户组下的成员能以root身份运行chown 、chmod 、adduser、passwd,但不能更改root的密码;也可以以root身份运行 parted和fdisk DISKADER ALL=(OP) DSKCMD #SYSADMIN ALL= NOPASSWD:SYDCMD,NOPASSWD:DSKCMD//不用输入密码

其他 chage -E 2005-12-31 user1 设置用户口令的失效期限 pwck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户 grpck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组 newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组

7、基础网络操作命令(11个) telnet 用TELNET协议远程登录。 ssh 用SSH加密协议远程登录。 scp 全拼为secure copy,用于不同主机之间复制文件。 wget 用命令行下载文件。 ping 测试主机之间网络的连通性。 route 显示和设置linux系统的路由表。 ifup 启动网卡。 ifdown 关闭网卡 dhclient eth0 以dhcp模式启用 ‘eth0’ ip link show 显示所有网口链路状态 mii-tool eth0 显示eth0的链路状态 ethtool eth0 显示eth0网卡数据统计 iwlist scan 显示无线网络 iwconfig eth1 显示eth1的无线网卡的配置 whois www.baidu.com 在 Whois 数据库中查找 nbtscan ip_addr netbios解析 (windows) nmblookup -A ip_addr netbios查看(windows) smbclient -L ip_addr/hostname 显示 Windows 主机的远程共享 smbget -Rr smb://ip_addr/share 通过 smb 从主机 windows 下载文件

ifconfig 查看、配置、启用或禁用网络接口的命令 ifconfig eth0 promisc 设置 ‘eth0’ 成混杂模式以嗅探数据包 (sniffing)

route 路由管理 route -n show routing table route add -net 0/0 gw IP_Gateway configura default gateway route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configure static route to reach network '192.168.0.0/16' route del 0/0 gw IP_gateway remove static route echo "1" > /proc/sys/net/ipv4/ip_forward activate ip routing 1 2 3 4 5 netstat 查看网络状态 1)查看某个服务的TCP连接数 #netstat -an | grep ESTABLISHED | grep ':80' | wc -l

  1. netstat -nu //查看udp的连接数

3)查看网卡列表: netstat -i

显示组播组的关系:netstat -g ss 查看网络状态 1)ss -ta //检测套接字

2)显示所有活动的TCP连接以及计时器:ss -to

nmap 网络扫描命令 #弱口令检测 nmap –sU –p161 –script=snmp-brute ip //查找snmp弱口令,U:udp; #弱口令利用 nmap -sU -p161 --script=snmp-netstat ip //获取网络端口状态文章来源站点 nmap –sU –p161 –script=snmp-sysdescr ip //获取系统信息 nmap -sU -p161 --script=snmp-win32-user ip //获取用户信息 #批量ping扫描 nmap -sP 192.168.10.0/24 nmap -sL 192.168.10.0/24 //仅列出指定网络上的每台主机,不发送任何报文到目标主机(隐蔽探测) nmap -PS -p 22,23,2,80 39.156.66.18 //探测目标主机开放的端口,默认情况下nmap只扫描TCP端口 nmap -sS 39.156.66.0/24 //S:使用SYN半开放扫描,T:tcp nmap -sO 39.156.66.0/24 //探测目标主机支持哪些IP协议 nmap -vv nmap 192.168.10.1 192.168.10.2 192.168.10.3 //扫描多台主机 nmap 192.168.10.1,2,3 nmap 192.168.10.* --exclude 192.168.10.10 //执行全网扫描或用通配符扫描时你可以使用“-exclude”选项来排除某些你不想要扫描的主机 nmap -A 192.168.10.11 //-A启用操作系统和版本检测,脚本扫描和路由跟踪功能,“-O”和“-osscan-guess”也帮助探测操作系统信息 nmap -sA 192.168.10.11 //探测该主机是否使用了包过滤器或防火墙 nmap -PN 192.168.10.11 //扫描主机检测其是否受到数据包过滤软件或防火墙的保护,“-F”选项执行一次快速扫描,仅扫描列在nmap-services文件中的端口而避开所有其它的端口,“-r”选项表示不会随机的选择端口扫描 nmap --iflist //“–iflist”选项检测主机接口和路由信息 nmap -p T:8888,80 192.168.10.11 //指定具体的端口类型和端口号来让nmap扫描,扫描tcp端口 nmap -p 80-160 192.168.10.11 //扫描某个范围内的端口 nmap -PS 192.168.10.11 //包过滤防火墙会阻断标准的ICMP ping请求,在这种情况下,我们可以使用TCP ACK (PA)和TCP Syn(PS)方法来扫描远程主机 nmap -sS 192.168.10.11 //隐蔽扫描 nmap -sN 1192.168.10.11 //TCP空扫描规避防火墙

lsof 全名为list open files,也就是列举系统中已经被打开的文件。 mail 发送、接收邮件。 mutt 邮件管理命令。

nslookup 查询互联网DNS服务器的命令 dig 查找DNS的解析过程 host 查询DNS的命令。 traceroute 追踪数据传输路由状况 tcpdump 命令行的抓包工具 用法: tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ] [ -T 类型 ] [ -w 文件名 ] [表达式 ]

tcpdump的选项:

-a    将网络地址和广播地址转变成名字; -d    将匹配信息包的代码以人们能够理解的汇编格式给出; -dd   将匹配信息包的代码以c语言程序段的格式给出; -ddd   将匹配信息包的代码以十进制的形式给出; -e    在输出行打印出数据链路层的头部信息,包括源mac和目的mac,以及网络层的协议; -f    将外部的Internet地址以数字的形式打印出来; -l    使标准输出变为缓冲行形式; -n   指定将每个监听到数据包中的域名转换成IP地址后显示,不把网络地址转换成名字; -nn: 指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示 -t    在输出的每一行不打印时间戳; -v    输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息; -vv   输出详细的报文信息; -c   在收到指定的包的数目后,tcpdump就会停止; -F   从指定的文件中读取表达式,忽略其它的表达式; -i   指定监听的网络接口; -p: 将网卡设置为非混杂模式,不能与host或broadcast一起使用 -r   从指定的文件中读取包(这些包一般通过-w选项产生); -w   直接将包写入文件中,并不分析和打印出来; -s snaplen snaplen表示从一个包中截取的字节数。0表示包不截断,抓完整的数据包。默认的话 tcpdump 只显示部分数据包,默认68字节。 -T  将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;) -X 告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。

1)抓取包含10.10.10.122的数据包

tcpdump -i eth0 -vnn host 10.10.10.122 1 2)抓取包含10.10.10.0/24网段的数据包

tcpdump -i eth0 -vnn net 10.10.10.0/24 1 3)抓取包含端口22的数据包

tcpdump -i eth0 -vnn port 22 1 4)抓取udp协议的数据包

tcpdump -i eth0 -vnn udp 1 5)抓取icmp协议的数据包 #tcpdump -i eth0 -vnn icmp

6)抓取arp协议的数据包 tcpdump -i eth0 -vnn arp

7)抓取ip协议的数据包 tcpdump -i eth0 -vnn ip

8)抓取源ip是10.10.10.122数据包。 tcpdump -i eth0 -vnn src host 10.10.10.122

9、抓取目的ip是10.10.10.122数据包 tcpdump -i eth0 -vnn dst host 10.10.10.122

10)抓取源端口是22的数据包 tcpdump -i eth0 -vnn src port 22

11)抓取源ip是10.10.10.253且目的ip是22的数据包 tcpdump -i eth0 -vnn src host 10.10.10.253 and dst port 22

12)抓取源ip是10.10.10.122或者包含端口是22的数据包 tcpdump -i eth0 -vnn src host 10.10.10.122 or port 22

13)抓取源ip是10.10.10.122且端口不是22的数据包 tcpdump -i eth0 -vnn src host 10.10.10.122 and not port 22

14)抓取源ip是10.10.10.2且目的端口是22,或源ip是10.10.10.65且目的端口是80的数据包。 tcpdump -i eth0 -vnn ( src host 10.10.10.2 and dst port 22 ) or ( src host 10.10.10.65 and dst port 80 )

15)抓取源ip是10.10.10.59且目的端口是22,或源ip是10.10.10.68且目的端口是80的数据包。 tcpdump -i eth0 -vnn ‘src host 10.10.10.59 and dst port 22’ or ’ src host 10.10.10.68 and dst port 80 ’

16)把抓取的数据包记录存到/tmp/fill文件中,当抓取100个数据包后就退出程序。 tcpdump –i eth0 -vnn -w /tmp/fil1 -c 100

17)从/tmp/fill记录中读取tcp协议的数据包 tcpdump –i eth0 -vnn -r /tmp/fil1 tcp

18)从/tmp/fill记录中读取包含10.10.10.58的数据包 tcpdump –i eth0 -vnn -r /tmp/fil1 host 10.10.10.58

mtr((My traceroute是ping+traceroute) Linux版本的mtr命令默认发送ICMP数据包进行链路探测。可以通过“-u”参数来指定使用UDP数据包用于探测。相对于traceroute命令只会做一次链路跟踪测试,mtr命令会对链路上的相关节点做持续探测并给出相应的统计信息。所以,mtr命令能避免节点波动对测试结果的影响,所以其测试结果更正确,建议优先使用。此工具也有对应的Windows版本,名称为WinMTR。

用法:

mtr [-hvrctglspni46] [-help] [-version] [-report] [-report-cycles=COUNT] [-curses] [-gtk] [-raw] [-split] [-no-dns] [-address interface] [-psize=bytes/-s bytes] [-interval=SECONDS] HOSTNAME [PACKETSIZE]

常见可选参数说明:

-r 或 -report:以报告模式显示输出。

-p 或 -split:将每次追踪的结果分别列出来。

-s 或 -psize:指定ping数据包的大小。

-n 或 -no-dns:不对IP地址做域名反解析。

-a 或 -address:设置发送数据包的IP地址。用于主机有多个IP时。

-4:只使用IPv4协议。

-6:只使用IPv6协议。

另外,也可以在mtr命令运行过程中,输入相应字母来快速切换模式。

?或 h:显示帮助菜单。

d:切换显示模式。

n:切换启用或禁用DNS域名解析。

u:切换使用ICMP或UDP数据包进行探测。

默认配置下,返回结果中各数据列的说明:

第一列(Host):节点IP地址和域名。如前面所示,按n键可以切换显示。

第二列(Loss%):节点丢包率。

第三列(Snt):每秒发送数据包数。默认值是10,可以通过参数“-c”指定。

第四列(Last):最近一次的探测延迟值。

第五、六、七列(Avg、Best、Wrst):分别是探测延迟的平均值、最小值和最大值。

第八列(StDev):标准偏差。越大说明相应节点越不稳定。

ncat(nc) ncat/nc既是一个端口扫描工具,也是一款安全工具,还是一款监测工具,甚至可以做为一个简单的TCP代理。 yum install nmap-ncat -y

ncat -l 80 //监听某个端口的入站连接

ncat -v 49.235.179.157 22 //测试主机端口的连通性,另一端监听,还可实现nc进行主机间通信

ftop(查看流量) yum install iftop -y iftop -i eth0 //

参数: -i: 指定监听接口 -B: 以字节而非比特显示,默认是小b,即比特

其中,结果各字段表示如下: TX:发送流量 RX:接收流量 TOTAL:总流量 Cumm:运行iftop到目前时间的总流量 peak:流量峰值 rates:分别表示过去 2s 10s 40s 的平均流量

trickle(限制带宽):应用用于限制网络带宽 yum install trickle -y //安装

1)限制wget的上传和下载速度限制上传为10KB/S,下载为20KB/s

trickle -u 10 -d 20 wget mirrors.163.com/centos/7/is…

2)单独限制某个进程的下载和上传速度 trickle -s -d 50 -u 25 ftp

3)限制终端下的所有命令带宽为,下载500KB/S,上传250KB/s; trickle -s -d 500 -u 250 bash //单独命令使用时,必须加-s参数

网络带宽测试:iperf iperf 是一个网络性能测试工具,它可以测试 TCP 和 UDP 带宽质量,可以测量最大 TCP 带宽,具有多种参数和 UDP 特性,可以报告带宽,延迟抖动和数据包丢失。利用 iperf 这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。

yum -y install iperf gcc gcc-c++ gcc-g77 或源码安装:

wget -C downloads.es.net/pub/iperf/i… tar xvf iperf-3-current.tar.gz
cd iperf
./configure
make make install

测试示例: 1 )测试最大的TCP 带宽(参数-r是做双向测试,-M指定传输帧的大小)

server端:iperf -s -p 5800 -M 1460 -i 1 client端: iperf -c server_ip -p 5800 -M 1460 -m -i 1 -r

测试丢包率 server端:iperf -s -i 1 -u client端: iperf -c server_ip -i 1 -u -t 10 -b 500m -d

带宽测试工具:speedtest speedtest 是一个用 Python 写成的工具,speedtest 命令将直接提供上传/下载速率;

sudoaptinstallspeedtestcli或者sudo apt install speedtest-cli 或者 sudo pip3 install speedtest-cli

dstat(监控cpu内存) yum install dstat -y //安装

参数: -c: 显示cpu综合占有率 -m: 显示内存使用情况 -n: 显示网络状况 -l:显示系统负载情况 -r:显示I/O请求(读/写)情况

eg1:dstat -ncmlr

curl(发送请求) 1)url -O 文件名 url //保存到文件

2)用-i,显示网页头部信息 当然也会把网页信息显示出来,参数 -v可以显示通信的过程

3)更详细的通信信息可以用 参数 --trance 文件名 url,具体信息保存到单独的文件中 curl --trace info.txt www.baidu.com

4)使用参数 -X指定htpp的动词,例如GET POST,PUT,DELETE等,curl默认的是get请求,如果发送POSt请求 curl -X POST www.baidu.com

5)发送表单的时,只需要把数据拼接到url后面就行 curl www.baidu.com?data=xxx&data1=xxx

6)POST发送表单

curl -X POST --data “data=xxx” example.com/form.cgi POST发送请求的数据体可以用-d

curldlogin=emmapassword=123XPOSThttps://google.com/login或者curl -d’login=emma&password=123’-X POST https://google.com/login 或者 curl -d ‘login=emma’ -d ‘password=123’ -X POST google.com/login

使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST。-d参数可以读取本地文本文件的数据,向服务器发送。

curl -d ‘@data.txt’ google.com/login //读取data.txt文件的内容,作为数据体向服务器发送。 7)文件上传 curl --form upload=@localfilename --form press=OK [URL] curl --referer www.baidu.com www.baidu.com //–referer参数表示的是你从哪个页面来的

8)其他参数: –user-agent 可以用-A或者-H来替代,这个字段表示的是客户端设备的信息,服务器可能会根据这个User Agent字段来判断是手机还是电脑 curl --user-agent " 内容" url –cookie参数,使用–cookie可以携带cookie信息 curl --cookie “name=xxx” URL -c cookie-file可以保存服务器返回的cookie到文件, -b cookie-file可以使用这个文件作为cookie信息,进行后续的请求。 –header增加头部信息 curl --header “Content-Type:application/json” example.com