linux常用网络命令


网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool 用于查看 linux 服务器 ip 地址,
管理服务器网络配置,通过 telnet 和 ethernet 建立与 linux 之间的网络链接,
查看 linux 的服务器信息等。
下面让我们看看在 Linux 下的网络和监控命令的使用。
1. hostname
hostname 没有选项,显示主机名字
hostname –d 显示机器所属域名
hostname –f 显示完整的主机名和域名
hostname –i 显示当前机器的 ip 地址
补充:其实使用 “hostname+新的主机名” 命令还可以临时设置主机名,比如hostname newname
这样用的好处是,可以临时修改主机名称而不用重启。而通过/etc/sysconfig/network 文件来修改主机名则需要重启才能生效。
当然,我们在在执行这个命令后,必须记得手动修改/etc/sysconfig/network 文件里面的 HOSTNAME 的值,以便后续重启生效,这算是一个小技巧哦!
2. ping
ping 将数据包发向用户指定地址。当包被接收,目标机器发送返回数据包。ping 主要有两个作用:
用来确认网络连接是畅通的。
用来查看连接的速度信息。
如果你 ping zhangge.net 它将返回它的 ip 地址 。你可以通过 ctrl+C 来停止命令。
补充:-c 参数可以定义 ping 的次数,脚本中的网络判断用得比较多,比如 ping -c 4 zhangge.net 就是 ping 张戈博客四次;而在 windows 下,则使用-n 参数来定义 ping 次数,如 ping -n 4 zhangge.net
3. ifconfig
查看用户网络配置。它显示当前网络设备配置。对于需要接收或者发送数据错误查找,这个工具极为好用。
补充:Windows 用的 ipconfig,话说博主用久了 Linux,回到 windows 下回经常输入 ifconfig o(╯□╰)o...
4. iwconfig
iwconfig 工具与 ifconfig 和 ethtool 类似。是用于无线网卡的 . 你可以用他查看设置基本的 Wi-Fi 网络信息,例如 SSID, channel 和 encryption.还有其他很多配置你也可以查看和修改,, 包括 接收灵敏度, RTS/CTS, 发送数据包的分片大小,以及无线网卡的重传机制。
5. nslookup
nslookup 这个命令在 有 ip 地址时,可以用这个命令来显示主机名,可以找到给定域名的所有 ip 地址。而你必须连接到互联网才能使用这个命令。
例子. nslookup marsge.cn
你也可以使用 nslookup 从 ip 获得主机名或从主机名获得 ip。
补充:这个命令在 Windows 下同样适用。
6. traceroute
一个方便的工具。可用来查看数据包在提交到远程系统或者网站时候所经过的路由器的 IP 地址、跳数和响应时间。同样你必须链接到互联网才能使用这个命令。
补充:windows 下也有个类似的命令,喜欢玩 Windows 命令的童鞋可以试试:
MS DOS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 tracert
使用方式: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout]
[-R] [-S srcaddr] [-4] [-6] target_name
选项:
-d 不要将地址解析为主机名。
-h maximum_hops 搜寻目标所用的最大跃点数目。
-j host-list 松散的主机列表来源路由 (仅 IPv4)。
-w timeout 每个回复的等候逾时 (毫秒)。
-R 追踪来回路径 (仅 IPv6)。
-S srcaddr 要使用的来源地址 (仅 IPv6)。
-4 强制使用 IPv4。
-6 强制使用 IPv6。
举例:tracert zhangge.net
7. finger
查看用户信息。显示用户的登录名字、真实名字以及登录终端的名字和登录权限。这是 unix 一个很老的命令,现在已很少使用了。
补充:另外用 who -a 命令也可以查看用户信息。
8. telnet
通过 telnet 协议连接目标主机,如果 telnet 连接可以在任一端口上完成即代表着两台主机间的连接良好。
telnet hostname port – 使用指定的端口 telnet 主机名。这通常用来测试主机是否在线或者网络是否正常。
补充:此命令在 Windows 下同样适用。
9. ethtool
ethtool 允许你查看和更改网卡的许多设置(不包括 Wi-Fi 网卡)。你可以管理许多高级设置,包括 tx/rx、校验及网络唤醒功能。下面是一些你可能感兴趣的基本命令:
ethtool -i 显示一个特定网卡的驱动信息,检查软件兼容性时尤其有用
ethtool -p 启动一个适配器的指定行为,比如让适配器的 LED 灯闪烁,以帮助你在多个适配器或接口中标识接口名称
ethtool -s 显示网络统计信息
ethtool speed <10|100|1000> 设置适配器的连接速度,单位是 Mbps
10. netstat 发现主机连接最有用最通用的 Linux 命令。你可以使用”netstat -g”查询该主机订阅的所有多播组(网络)
netstat -nap | grep port 将会显示使用该端口的应用程序的进程 id
netstat -a or netstat –all 将会显示包括 TCP 和 UDP 的所有连接
netstat –tcp or netstat –t 将会显示 TCP 连接
netstat –udp or netstat –u 将会显示 UDP 连接
netstat -g 将会显示该主机订阅的所有多播网络。
2.ifup
ifup命令用于重新启动指定的网络设备。ifup命令的格式为:ifup 网络设备文件名。
ifup命令使用举例如下:
ifup eth0 // 重新启动网卡eth0。
ifup lo // 重新启动本地回绕网卡lo。
操作结果如下图所示:
3.ifdown
ifdown命令用于关闭指定的网络设备。ifdown命令的格式为:ifdown 网络设备文件名。
ifdown命令使用举例如下:
ifdown eth0 // 关闭网卡eth0。
ifdown lo // 关闭本地回绕网卡lo。
4.ethtool
ethtool命令用来查看或者修改指定网卡的工作方式。
ethtool命令的使用举例如下:
ethtool eth0 // 查看网卡eth0的工作方式,内容包括网卡的传输速度、全双工或半双工传输、网卡连接检测是否激活、网卡是否工作在自动协商状态等。
ethtool –s eth0 speed 10 duplex half // 设置网卡eth0的传输速度为10M、半双工传输模式。
ethtool –s eth1 speed 100 duplex full autoneg off // 设置网卡eth1的传输速度为100M、全双工、非自动协商模式。
5.mii-tool
mii-tool命令用于查看或修改指定网卡的通信协商方式。
mii-tool命令的使用举例如下:
mii-tool // 以简明的形式显示本机物理网卡的工作方式。
mii-tool –v // 以详细的形式显示本机物理网卡的工作方式。
mii-tool -F 10baseT-FD eth0 // 设置网卡eth0工作在10M、全双工模式下。
mii-tool –r eth0 // 设置网卡eth0工作在自动协商工作模式。
mii-tool –w eth0 // 实时监控网卡eth0工作模式的改变。
6.route
route命令用于查看或修改主机和网络的路由信息。操作如下图所示:
route命令的使用举例如下:
route // 显示路由信息。
route add –host 192.168.1.110 dev eth0 // 给网卡eth0的路由表中加入新地址192.168.1.110。
route add –net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 //
给子网192.168.1.0添加路由和网关,新增加的路由和网关地址为192.168.1.1。
route add default gw 192.168.0.1 // 给路由表中添加默认网关地址192.168.0.1
route del –host 192.168.1.110 dev eth0 // 删除网卡eth0路由表中的地址192.168.1.110。
route del –net 192.168.1.0 netmask 255.255.255.0 // 在路由表中删除子网192.168.1.0的路由信息。
route change 192.168.1.0 mask 255.255.255.0 192.168.10.100 // 将子网 192.168.1.0 的下一跃点地址设置为 192.168.10.100。
7.netstat
netstat命令用于显示本机上与IP、TCP、UDP和ICMP协议相关的统计数据,该命令经常被用于检验本机各端口的网络连接情况。
netstat命令使用举例如下:
netstat // 显示本机网络连接情况。
netstat –a // 显示所有的有效连接信息,包括已建立的连接(ESTABLISHED)和监听的连接请求(LISTENING)。
netstat –ac // 以连续的形式显示所有的有效连接信息,每隔1秒刷新1次显示,直到用户中断显示。
netstat -i // 显示系统中所有网络接口信息,包括物理网卡、网卡别名和本地回环网卡。
netstat –n // 显示系统中所有已建立的连接。
netstat –r // 显示路由表。
netstat –ta // 显示有效的TCP连接。
netstat –ua // 显示有效的UDP连接。
netstat –s // 显示各个协议的统计信息。
netstat -an | grep 2811 // 显示端口号为2811的网络连接信息。
操作如下图所示:
8.ping
ping命令用来检查网络连接情况,ping命令执行时使用ICMP传输协议,给目标主机发出要求回应的信息,若目标主机的网络功能没有问题,就会返回回应信息。
当目标主机无效或者禁用ping功能时,ping命令的执行会失败。ping命令的使用举例如下:
ping 192.168.0.1 // 检查本机与IP地址为192.168.0.1的主机的网络连接是否正常。
ping –c 3 www.baidu.com
// 检查本机与主机www.baidu.com的网络连接是否正常,并设置回应次数为3,需要网络中的DNS服务器将域名www.baidu.com转换为IP地址。操作结果如下图所示:
ping –R 202.201.32.200
// 检查本机与IP地址为202.201.32.200的主机的网络连接是否正常,并且显示路由信息。
9.service
service命令能够将目录“/etc/init.d/”中有关网络服务或系统服务脚本程序以一种统一的格式执行,格式为:“service 脚本程序
选项”,常用选项有:status、stop、start、restart。service命令使用举例如下:
service network status // 查看网络的工作状况,将显示当前主机中的所有物理网卡和激活的网卡。操作结果如下:
service network stop // 关闭当前主机中的网卡,该操作将停止当前主机的对外网络连接。
service network start // 打开当前主机中的网卡,该操作使当前主机获取IP地址,进行对外网络连接。
service network restart // 先执行service network stop的功能,再执行service network start的功能。操作过程如下:
service named status // 查看当前主机域名服务状态。 操作结果结果如下:
10.telnet
telnet只能操作服务器,telnet服务器模拟一个终端允许你连接并工作于一个远端系统上
- 使用TCP/IP连接于另一个系统
telnet ip 连接ip地址
ssh ip 连接服务器
11.ftp
ftp:既能操作服务器文件又能下载服务器文件
使用 ftp 复制或传送文件 ftp(File Transfer Protocol)允许用户对远地主机复制文件,用户毋须考虑操作系统类型,即能向或从任何具有 TCP/IP 的系统复制文件。 ftp命令允许复制目录中的一个文件或所有文件,但不能复制多层 次目录。使用ftp时, 必需在远地主机上设有帐户。 当 ftp 注册到远地系统时,并未得到 shell ,而是通过 ftp 命令解释程序同远地主机进行通讯。
lcd //本地目录
cd //ftp端目录
mput:local-files 将本地主机中一批文件传送到远端主机
例如:如果要把本地当前目录下所有.txt文件上传到服务器/home/boss/1324wsqb目录下,则可以进行以下操作:
cd /home/boss/1324wsqb
mput *.txt(回车)
注意:上传文件都来自于主机的当前目录下,比如,在/home/briup/BriupLearn/day03test下运行的ftp命令,则只有在此目录下的文件才会上传到服务器
mget: 格式mget[remote-files],从远程主机接受一批文件至本机 ,如果获取服务器/jdJava/目录下的所有文件,
则可以使用 ftp>cd /jdJava
ftp>mget *.*(回车)
注意:文件此时都下载到了Linux主机的当前目录,比如,在/home/briup/下运行ftp命令,则文件都下载到了/home/briup/下面
get:格式:get[remote-file][local-file]
get day3.txt /home/briup/BriupLearn/day03test/dayfromftp.txt
获取FTP服务器上面的文件day3.txt,存放于/home/briup/BriupLearn/day03test/dayfromftp.txt,并且改名为dayfromftp.txt
put:格式:put[local-file][remote-file] 比如:
put /home/briup/BriupLearn/day03test/test1.txt MyTestftp.txt
使用put语句,把本地目录中的test1.txt上传到ftp服务器,命名为MyTestftp.txt
bye 退出
12. ssh
如果ubuntu系统中没有安装ssh程序,也可以使用下列命令进行安装:
sudo apt-get install openssh-client
sudo apt-get install openssh-server
安装好后ssh服务的启动和停止命令如下:
启动ssh服务:
#sudo /etc/init.d/ssh start
停止ssh服务:
#sudo /etc/init.d/ssh stop
重启ssh服务:
#sudo /etc/init.d/ssh restart
打开shell终端,通过ifconfig命令,查看该系统的ip地址,ssh的端口号一般为22.
输入ubuntu系统的ip地址和账户名,并根据提示输入密码,即可通过ssh登录到ubuntu系统中去,并执行各种命令操作
ssh能够登录到其他系统,如下面命令登录到Ubuntu系统的user用户,其中该用户的ip地址为192.168.64.222:--- 如下所示:
[java] view plain copy
ssh user@192.168.64.222
The authenticity of host '192.168.64.222 (192.168.64.222)' can't be established.
ECDSA key fingerprint is SHA256:W52Quk6D/OJrHMXg4csff9v1XgbSK9zts8PAft9ItHY. Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.64.222' (ECDSA) to the list of known hosts.
user@192.168.64.222's password:
Welcome to Ubuntu 16.10 (GNU/Linux 4.8.0-41-generic x86_64)
即可登录成功

以上就是Linux中网络命令的使用过程
.ifconfig
   ifconfig是Linux系统中最常用的一个用来显示和设置网络设备的工具。其中“if”是“interface”的缩写。它可以用来设备网卡的状态,或是显示当前的设置。
   下面我们简单地说明常用的命令组合:
   1) 将第一块网卡的IP地址设置为192.168.0.1:
   ifconfig eth0 192.168.0.1 (格式:ifconfig 网络设备名 IP地址)
   2) 暂时关闭或启用网卡:
   关闭第一块网卡:ifconfig eth0 down
   启用第一块网卡:ifconfig eth0 up
   3) 将第一块网卡的子网掩码设置为255.255.255.0:
   ifconfig eth0 netmask 255.255.255.0(格式:ifconfig 网络设备名 netmask 子网掩码)
   我们也可以同时设置IP地址和子网掩码:
   ifconfig eth0 192.168.0.1 netmask 255.255.255.0
   4) 将第一块网卡的广播地址设置为192.168.0.255:
   ifconfig eth0 –broadcast 192.168.0.255
   5) 将第一块网卡设置为不接收多播数据包:
   ifconifg eth0 allmulti
   如果要让其接收,则使用命令:ifconfig eth0 -allmulti
   6) 查看第一块网卡的状态:
   ifconfig eth0
   如果要查看所有的网卡状态,则直接使用不带参数的ifconfig命令即可。
   ifconfig输出的状态信息是十分有用的,下面,我们就简单说明一下:
   有几个状态比较重要:
   ? UP/DOWN:网卡是否启动了,如果是DOWN的话,那肯定无法用的;
   ? RX packets中的errors包的数量如果过大说明网卡在接收时有问题;
   ? TX packets中的errors包的数量如果过大说明网卡在发送时有问题;
   3.route
   route命令是用来查看和设置Linux系统的路由信息,以实现与其它网络的通讯。
要实现两个不同的子网之间的网络通讯,需要一台连接两个网络路由器或者同时位于两个网络的网关来实现。
   在Linux系统中,我们通常设置路由是为了解决以下问题:
该Linux机器在一个局域网中,局域网中有一个网关,能够让你的机器访问Internet,那么我们就需要将这台机器的IP地址设置为Linux机器的默认路由。
   1) 增加一个默认路由:
   route add 0.0.0.0 gw 网关地址
   2) 删除一个默认路由:
   route del 0.0.0.0 gw 网关地址
   3) 显示出当前路由表
   route
   第二类:诊断工具
   1.ping
   ping是一个最常用的检测是否能够与远端机器建立网络通讯连接。它是通过Internet控制报文协议ICMP来实现的。而现在有些主机对ICMP进行过滤,在这种特殊的情况下,有可能使得一些主机Ping不通,但能够建立网络连接。这是一种特例,在此事先说明。    同样的,在此不罗列ping命令的所有可选参数,而是通过实例来说明一些常用的组合,需要更详细地了解的,可以通过www.linuxaid.com.cn网站在线培训的命令查询工具获得。    1) 检测与某机器的连接是否正常:
   ping 192.168.0.1
   ping www.linuxaid.com.cn
   也就是说,我们可以用IP地址或域名来指定机器。
   2) 指定ping回应次数为4:
   在Linux下,如果你不指定回应次数,ping命令将一直不断地向远方机器发送ICMP信息。我们可以通过-c参数来限定:ping –c 4 192.168.0.1    3) 通过特定的网卡进行ping:
   有时,我们需要检测某块网卡(系统中有多块)能否ping通远方机器。我们需要在执行ping命令时指出:
   ping –I eth0 192.168.0.1
   2.traceroute
   如果你ping不通远方的机器,想知道是在什么地方出的问题;或者你想知道你的信息到远方机器都经过了哪些路由器,可以使用traceroute命令。顾名思义:trace是跟踪,route是路由,也就是跟踪路由。    使用这个命令很简单:
   traceroute 远程主机IP地址或域名
   这个命令的输出类似:
   1 路由器(网关)的IP地址 访问所需时间1 访问所需时间2 访问所需时间3
   2 路由器(网关)的IP地址 访问所需时间1 访问所需时间2 访问所需时间3
   ………
   1) 最前面的数字代表“经过第几站”;
   2) 路由器(网关)的IP地址就是“该站”的IP地址;
   3) 访问所需时间1、2、3是指访问到这个路由器(网关)需要的时间。
   3.netstat
   在Linux系统中,提供了一个功能十分强大的查看网络状态的工具:netstat。它可以让您得知整个Linux系统的网络情况。
   1)统计出各网络设备传送、接收数据包的情况:
   使用命令:netstat –i
   这个命令将输出一张表,其中包括:
   Iface:网络接口名 MTU:最大传输单元
   RX-OK:共成功接收多少个包 RX-ERR:接收的包中共有多少个错误包
   RX-DRP:接收时共丢失多少个包 RX-OVR:共接收了多少个碰撞包
   TX-OK:共成功发送多少个包 TX-ERR:发送的包中共有多少个错误包
   TX-DRP:发磅时共丢失多少个包 TX-OVR:共接收了多少个碰撞包
   2)显示网络的统计信息
   使用命令:netstat –s
   使用这个命令,将会以摘要的形式统计出IP、ICMP、TCP、UDP、TCPEXT形式的通信信息。
   3)显示出TCP传输协议的网络连接情况:
   使用命令:netstat –t
   这个命令的输出也是一张表,其中包括:
   Local Address:本地地址,格式是IP地址:端口号
   Foreign Address:远程地址,格式也是IP地址:端口号
   State:连接状态,包括LISTEN、ESTABLISHED、TIME_WAIT等。
   4)只显示出使用UDP的网络连接情况:
   使用命令:netstat –t
   输出格式也是一样的。
   5)显示路由表:
   使用命令:netstat –r
   这个命令的输出与route命令的输出相同。
      5.2 网络配置文件
   在Red Hat Linux 7.1中有一些用于存放网络配置的文件:
   1./etc/hosts
   在该文件中存放的是一组IP地址与主机名的列表,如果在该列表中指出某台主机的IP地址,那么访问该主机时将无需进行DNS解析。
   2./etc/host.conf
   该文件用来指定域名解析方法的顺序,如:
   order hosts,bind
   它说明,首先通过/etc/hosts文件解析,如果在该文件中没有相应的主机名与IP地址的对应关系,再通过域名服务器bind进行解析。
   3./etc/resolv.conf    在该文件中存放域名服务器的IP地址。
   4./etc/protocols
   Red Hat Linux 7.1系统使用该文件辨别本主机使用的,并通过它完成协议和协议号之间的映射,用户不应修改该文件。
   5./etc/services
   该用户用于定义现有的网络服务,用户无需修改它,它通常由安装网络服务的程序来维护。该文件包括网络服务名、网络端口号和使用的协议类型,其中网络端口号和使用的协议类型之间有一个斜杠分开,在设置行的最后还可以添加一些服务的别名。    5./etc/xinetd.d目录
   在Linux系统中有一个超级服务程序inetd,大部分的网络服务都是由它启动的,如chargen、echo、finger、talk、telnet、wu-ftpd等…,在7.0之间的版本它的设置是在/etc/inetd.conf中配置的,在Red Hat 7.0后,它就改成了一个xinetd.d目录。
   在xinetd.d目录中,每一个服务都有一个相应的配置文件,我们以telnet为例,说明一下各个配置行的含义:
   service telnet
   {
   socket_type=stream
   wait=no
   user=root
   server=/usr/sbin/in.telnetd
   log_on_failure+=USERID
   disable=yes
   }
   第一行,说明该配置用来设置telnet服务。
   第二行,说明Socket连接类型是stream,也就是TCP
   第三行,是指不等待到启动完成
   第四行,是指以root用户启动服务进程
   第五行,是指服务进程是/usr/sbin/in.telnetd
   第六行,是用于做一些出错日志
   第七行,是指禁止远方telnet,如果需要开放则将该配置改为:disable=no
  修改了xinetd的配置,需要重启xinetd才能够生效,有两种方法可以实现:
   1) 执行如下命令:
   /etc/rc.d/init.d/xinetd restart
   2) 执行如下命令:
   killall –HUP xinetd
      5.3 网络服务访问限制
   在Red Hat Linux 7.1中加强了网络安全的防范,如果你安装时安全等级不是在最低一级的话,那么本机之外的所有访问都可能被拒绝。这是因为在Red Hat
7.1中做了一些默认的ipchains设置,这是Linux内置的防火墙机制,它可以使用一些规则来允许或禁止某种访问。
   它的规则存放在/etc/sysconfig/ipchains文件中,如果你想让它暂时不生效,那你可以运行/etc/rc.d/init.d/ipchains
stop,那么所有的规则都被取消,所有的网络访问都将被允许。
   你可以运行/etc/rc.d/init.d/ipchains status来获知现在对网络访问的限制。关于这方面的知识,本文限于篇幅无法详细介绍,有兴趣的读者可参考《Linux防火墙》一书。
   5.4 WEB服务器
   在Linux系统中最适合于做服务器的当数Apache,Red Hat Linux 7.1中集成了Apache
1.3.19版,你只要在安装时选中WEB服务器,那么系统将自动完成Apache服务器的安装,在默认情况,WWW服务就已经启动了。
  如果你在安装时没有选择WEB服务器包,那也没有关系,你只需执行以下命令即可:
   1) 将Red Hat Linux 7.1安装光盘的第一张放入光驱,然后执行如下命令:
   # mount /mnt/cdrom
   2) 转到apache安装文件所在目录:
   # cd /mnt/cdrom/RedHat/RPMS
   3) 使用RPM完成安装:
   # rpm –ivh apache-1.3.19-5.i386.rpm
   现在,你就已经拥有一个基于Linux的WEB服务器了,它的配置文件位于/etc/httpd/conf目录下,你可根据需要进行相应的修改,修改完后执行:/etc/rc.d/init.d/httpd
restart即可。而WEB服务的主目录则在/var/www/html目录下,你可以将你的WEB页传到这里就可以更新了。
   而如果每一个用户都想要拥有一个自己的主页的话,则:
   1) 首先在自己的用户主目录下建一个public_html目录:
   # cd
   # mkdir public_html
   2) 然后将自己的用户主目录的权限改为大家可读
   # chmod 755 用户主目录
   3) 这样你就可以使用“localhost/~用户名/”访问到每个用户的主页了。
      5.5 FTP服务器
   在Red Hat Linux 7.1中集成了Wu-FTP
2.6.1做为FTP服务器,在你安装时只要选择了FTP包的话,那么你的Linux服务器就是一台FTP服务器了,如果当时没有安装的话,也没有关系,跟安装apache一样:    1) 将Red Hat Linux 7.1安装光盘的第一张放入光驱,然后执行如下命令:
   # mount /mnt/cdrom
   2)转到wu-ftp安装文件所在目录:
   # cd /mnt/cdrom/RedHat/RPMS
   3)使用RPM完成安装:
   # rpm –ivh wu-ftp-2.6.1-16.i386.rpm
   由于FTP服务是由xinetd超级服务器创建的,所以关于FTP服务器的配置在/etc/xinetd.d目录下的wu-ftpd文件中:
   service ftp
   {
   socket_type=stream
   wait=no
   user=root
   server=/usr/sbin/in.ftpd
   server_args=-l –a
   log_on_success+=DURATION USERID
   log_on_failure+=USERID
   nice=10
   disable=no
   }
   下面,我们介绍一些关于FTP服务器的管理方法:
   1、 暂时关闭FTP服务
   有两种方法可以使FTP服务暂停:
   1) 以root用户身份执行:
   # ftpshut now
   这样就会在/etc目录下生成一个shutmsg的文件,这时FTP服务器将无法使用,直到你删掉这个文件。
   2) 修改配置文件/etc/xinetd.d/wu-ftpd,将disable=no改为disable=yes,然后重启xinetd。
   2、 禁止某用户使用FTP服务
   有两种方法可以禁止某用户使用FTP服务器:
   1) 在/etc/ftpuser中写入该用户帐号名
   2) 在/etc/ftpaccess中写入一行配置:
   deny-uid 用户名
   用这种方法还可以禁止一个组的用户使用
   deny-gid 组名
   3、 禁止匿名用户(anonymous)登录FTP服务器
   有许多种方法可以实现,但我觉得最简单有效的方法就是将anonymous写入配置文件:/etc/ftpuser中,就可了。
   5.6 文件服务器
   我们还可以使用Red Hat Linux
7.1内置的Samba为局域网内的Windows主机做文件服务器。如果在安装系统时选择了SMB服务器软件包的话,那么安装完以后,Samba服务就已经Ready了。
   不过为了方便配置,建议安装一下swat,它提供了一个WEB界面的配置工具。它的安装包是第二张光盘的/RedHat/RPMS/samba-swat-2.0.7-36.i386.rpm。
   安装完以后,它会在xinetd.d目录中新建一个swat文件,其内容为:
   service swat
   {
   port=901
   socket_type=stream
   wait=no
   only_from=127.0.0.1
   server=/usr/sbin/swat
   log_on_failure+=USERID
   disable=yes
   }
   我们看到disable的值是yes,也就是说,现在swat还没有启用,因此,我们需要将其改为disable=no,然后重启xinted。另外,由于这里有一句:
   only_from=127.0.0.1
   说明只能在本机使用swat,而如果你想在Windows中用IE来配置的话,请将这句注释掉或删掉。
   下面,我们以设置一个大家都可以访问的homes目录为例,说明SWAT的设置方法:
   1) 打开IE浏览器,在地址栏上输入Linux的主机名或IP以及“:901”,例如:
   http://192.168.0.1:901
   2) 如果连接正常,将出一个登录提示窗,要求输入用户名与密码,在此以root为用户名,并输入root用户的密码,再单击确定;
   3) 如果输入无误,将出现Samba的配置界面:Swat的首页;
   我们可以看到在Swat界面中,最上面有7个图标,分别是:HOME(首页)、GLOBALS(全局设置)、SHARES(共享设置)、PRINTERS(打印机)、STATUS(状态)、VIEW(查看)、PASSWORD(密码)   4) 首先,我们单击GLOBALS图标,将出现GLOBALS设置页面,其中我们对以下几项进行设置:
  ? BaseOption à Workgroup:在些输入工作组名(如NetBIOS中的工作组名)
  ? BaseOption à Netbios name:主机名
  ? SecurityOption à Security:选择安全等级,在些选择“SHARE”
  ? SecurityOption à hosts allow:允许的主机,通常写入你的网络号,如192.168.0.
  ? SecurityOption à hosts deny:如果你不让某台机器使用,则写入它的IP地址

  修改完后,点击“Commit Changes”按钮(在7个图标的下边一些),保存设置。
  5) 然后,单击SHARES图标,进行共享设置:
  第一步:在Create Share按钮的右边文本框中输入要设置的共享名
  第二步:单击“Create Share”按钮;
  第三步:确认“BaseOptions à Path的值为你想共享的目录,例如/home/smb/test(注意这必须是已经存在的目录);
  第四步:将“SecurityOptions à writeable”的值设置为Yes,使该目录共享为可写;
  第五步:将“SecurityOptions à guest ok”的值设置为Yes,使该目录无需密码访问;
  第六步:在“SecurityOptionsàhosts allow、hosts deny”中设置相应的主机IP;
  第七步:将“BrowseOptionsàbrowseable”设置为Yes,使其便于使用
  最后,点击“Commit Changes”按钮,保存设置。
  现在,我们就可以在Windows 9x上通过网络邻居访问到这台Samba服务器,并且有一个可读、可写的共享目录。
  在平时使用的时间,系统管理员可以点击“STATUS”按钮,切换到状态页面对其进行监测,在这个页面上,你可以:
  1) 启动(Start smbd按钮)、停止Samba(Stop Smbd按钮)服务,以及重启服务(Restart smbd按钮);
  2) 另外,你可以看到当前与Samba服务器建立的连接(Active Connections),并且可以按下“X”按钮,中止它的访问;
   3) 同时你还可以检测到正在访问的文件夹(Active Shares),正打开的文件(Open Files)。
  Samba服务还可以对用户进行认证,与Window NT域进行集成等强大的功能,在些限于篇幅就不详细介绍,有兴趣的读者可以参考《实战Samba》一书。
配置IP的方法:
A、这种方法立即生效,但是重启将不会保存。(除了这个方法的其它方法都可以保存下来)
Ifconfig eth0 1.1.1.1 netmask 255.0.0.0 up
Ifconfig eth0:1 1.1.1.3 up //设置一个网卡多个IP的方法(在设置虚拟主机时有用到)
激活网卡:Ifconfig eth0 up
关闭网卡:Ifconfig eth0 down
动态获取IP:Ifconfig etho –dynamic
Dhclient
修改Mac值:先关闭网卡:Ifconfig eth0 down
再修改MAC值:Ifconfig eth0 hw ether 112233445566
再激活网卡:Ifconfig eth0 up
B、Netconfig或者Setup,但只能设置Eth0网卡
C、Neat:打开图形窗口进行设置
D、配置文件设置:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
注意:配置完后重启网卡Service network restart出现失败时,用第四种方法检查配置文件中的Bootup是否为None,如果是DHCP一般会出错的。
3、配置网关:
查看网关:route
添加默认路由:

route add –net 0.0.0.0 netmask 0.0.0.0 gw 192.168.0.1
删除默认路由:
route del –net 0.0.0.0 netmask 0.0.0.0 gw 192.168.0.1
Linux路由配置:
1、首先开启路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward (1为打开路由功能,0为关闭路由功能)
(在这个实验里只要开启路由功能就OK了)
2、其它路由设置:
A、添加路由信息:
route add –net 10.0.0.1 netmask 255.0.0.0 gw 192.168.0.1
或者route add –net 10.0.0.1 netmask 255.0.0.0 dev eth0 (通过本机的第一个网卡出去)
删除路由条目:只要把上面的Add改为Del就可以了
B、用Zebra配置路由(配置就跟Cisco的是一样的命令):
1)设置登录密码:
Vi /etc/zebra/zebra.conf
password abc #设置连接时的密码
enable password 123 #设置特权密码
2)开启服务
service zebra start
3)建立要配置的路由协议文件
如用Rip协议:touch /etc/zebra/ripd.conf
4)开启Rip协议:service ripd start
5)进入Zebra: 
方法一、Telnet 127.0.0.1 2601   ##记得端口是2601
如果没有设置密码,默认情况下是不允许连接的,适合于远程登录
方法二、Vtysh    
##不用密码也可以进入,如果有密码还会显示出来,但只适用于本地登录。
* traceroute
  traceroute命令也是用于检查网络是否能够正常通信,与ping不同的是,ping命令只能测试出从本机到目的host是否能够通信,而traceroute命令则能测试出从本机经过了哪些路由器或主机到达目的主机,如果不能到达,其故障具体是出在什么地方。所以我们常常在ping不通时用该命令在进一步查找原因所在。   *netstat   netstat命令用于显示网络状态信息,其用途很广泛,可以用来察看网络连接状态、接口配置、路由表等,并取得一些统计信息。该命令的主要参数和用途如下:
  -a :显示所有配置的接口
  -i :显示接口的统计信息
  -n :以数字的形式显示ip地址
  -r :显示内核的路由表
  -s :显示计数器的值
  *ifconfig
  前面已经讲到了,ifconfig命令用来查看网络接口的配置情况,也用于调试网络设备是否已经正确安装配置,或者用该命令来重新配置网络,只是用ifconfig命令配置的网络不是永久性的,系统一旦重新启动,先前用ifconfig配置的各种参数便不复存在。   *telnet
  telnet命令用于远程登录,其命令格式为:telnet
主机名(或ip地址)。通过telnet命令登录远程计算机,就像登录到本机上执行操作一样。当然,要想远程登录到一台计算机上,必须知道该机合法的用户名和密码。要提醒大家的一点是,当用telnet命令登录并结束了远程会话后,一定要使用logout命令退出远程系统,以免造成意想不到的问题。   *rlogin
  rlogin是remote login(远程登录的缩写),与telnet命令很相似,最常用的格式为:
DL.bitsCN.com网管软件下载
  rlogin host
  rlogin命令还带有一些参数,常用的有:
  -8 :始终允许8位输入数据管道,允许发送格式化ANSI字符和其他特殊代码。
  -E :禁止把任何字符当成转义字符。当该参数与-8一起使用时,便提供一个完全的透明连接。
  -L :允许rlogin会话在litout模式下运行。
  -x :为所有通过rlogin会话交互的数据进行DES加密,从而提供安全性。
  *ftp
  ftp命令是标准的文件传输协议的用户接口,命令格式为:ftp
主机名或ip地址,用于在TCP/IP网络上进行文件传输。ftp命令可以用来传输ASCII文件和二进制文件。同样,要想实现ftp文件传输,你必须知道远程计算机上合法的用户名和口令,并且该用户名具有所要传输的文件的存取权限。 rcp命令
rcp代表“remote file copy”(远程文件拷贝)。该命令用于在计算机之间拷贝文件。
rcp命令有两种格式。第一种格式用于文件到文件的拷贝;第二种格式用于把文件或目录拷贝到另一个目录中。
rcp命令的一般格式是:
rcp [-px] [-k realm] file1 file2 rcp [-px] [-r] [-k realm] file
directory
每个文件或目录参数既可以是远程文件名也可以是本地文件名。远程文件名具有如下形式:rname@rhost:path,其中rname是远程用户名,rhost是远程计算机名,path是这个文件的路径。 rcp命令的各选项含义如下:
-r 递归地把源目录中的所有内容拷贝到目的目录中。要使用这个选项,目的必须是一个目录。
-p 试图保留源文件的修改时间和模式,忽略umask。
-k 请求rcp获得在指定区域内的远程主机的Kerberos 许可,而不是获得由krb_relmofhost(3)确定的远程主机区域内的远程主机的Kerberos许可。
-x 为传送的所有数据打开DES加密。这会影响响应时间和CPU利用率,但是可以提高安全性。如果在文件名中指定的路径不是完整的路径名,那么这个路径被解释为相对远程机上同名用户的主目录。如果没有给出远程用户名,就使用当前用户名。如果远程机上的路径包含特殊shell字符,需要用反斜线(//)、双引号(”)或单引号(’)括起来,使所有的shell元字符都能被远程地解释。 需要说明的是,rcp不提示输入口令,它通过rsh命令来执行拷贝。
1、ping
ping 命令是用来测试TCP/IP 网络是否畅通或者测试网络连接速度的命令,对确定网络是否正确连接,以及网络连接的状况十分有用。简单的说,ping就是一个测试程序,如果ping运行正确,大体上就可以排除网络访问层、网卡、Modem的输入输出线路、电缆和路由器等存在的故障,从而缩小问题的范围。 ping命令的原理是根据计算机唯一标示的IP 地址,当用户给目的地址发送一个数据包时,对方就会返回一个同样大小的数据包,根据返回的数据包用户可以确定目的主机的存在,并初步判断目的主机的操作系统。 用法 (1)命令格式
ping ( 选项)目的地址

目的地址指的是被测计算机的IP 地址、主机名或者是域名。ping 命令包含12 个参数,所有参数都可以通过执行ping来查看。如下图:
这里写图片描述
(2)实例
这里写图片描述
注:Linux下的ping命令和Windows下的ping命令不同,需要Ctrl+C来终止
(Linux和Windows下ping命令的区别)
(3)选项
-d:使用Socket的SO_DEBUG功能;
-c<完成次数>:设置完成要求回应的次数;
-f:极限检测;

-i<间隔秒数>:指定收发信息的间隔时间; -L<网络界面>:使用指定的网络界面送出数据包;
-l<前置载入>:设置在送出要求信息之前,先行发出的数据包;
-n:只输出数值;
-p<范本样式>:设置填满数据包的范本样式;
-q:不显示指令执行过程,开头和结尾的相关信息除外;
-r:忽略普通的Routing Table,直接将数据包送到远端主机上;
-R:记录路由过程;
-s<数据包大小>:设置数据包的大小;
-v:详细显示指令的执行过程。
-t<存活数值>:设置存活数值TTL的大小
说一下其中的-c、 -i参数
其中 –c count 次数,也就是ping的次数;-i interval 间隔 ,每次ping之间的时间空格
这里写图片描述
2、telnet
telnet命令用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。
用法
(1)命令格式:
telnet (选项) (参数)
(2)实例
这里写图片描述
(3)参数
远程主机:指定要登录进行管理的远程主机
端口:指定TELNET协议使用的端口号
(4)选项
-8:允许使用8位字符资料,包括输入与输出;
-a:尝试自动登入远端系统;
-b<主机别名>:使用别名指定远端主机名称;
-c:不读取用户专属目录里的.telnetrc文件;
-d:启动排错模式;
-e<脱离字符>:设置脱离字符;
-E:滤除脱离字符;
-f:此参数的效果和指定”-F”参数相同;
-F:使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机;
-k<域名>:使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名;
-K:不自动登入远端主机;
-l<用户名称>:指定要登入远端主机的用户名称;
-L:允许输出8位字符资料;
-n<记录文件>:指定文件记录相关信息;
-r:使用类似rlogin指令的用户界面;
-S<服务类型>:设置telnet连线所需的ip TOS信息;
-x:假设主机有支持数据加密的功能,就使用它;
-X<认证形态>:关闭指定的认证形态。
3、netstat
netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况
用法
(1)命令格式
netstat(选项)
(2)选项
-a或–all:显示所有连线中的Socket;
-A<网络类型>或–<网络类型>:列出该网络类型连线中的相关地址;
-c或–continuous:持续列出网络状态;
-C或–cache:显示路由器配置的快取信息;
-e或–extend:显示网络其他相关信息;
-F或–fib:显示FIB;
-g或–groups:显示多重广播功能群组组员名单;
-h或–help:在线帮助;
-i或–interfaces:显示网络界面信息表单;
-l或–listening:显示监控中的服务器的Socket; -M或–masquerade:显示伪装的网络连线;
-n或–numeric:直接使用ip地址,而不通过域名服务器;
-N或–netlink或–symbolic:显示网络硬件外围设备的符号连接名称;
-o或–timers:显示计时器;
-p或–programs:显示正在使用Socket的程序识别码和程序名称;
-r或–route:显示Routing Table;
-s或–statistice:显示网络工作信息统计表;
-t或–tcp:显示TCP传输协议的连线状况;
-u或–udp:显示UDP传输协议的连线状况;
-v或–verbose:显示指令执行过程;
-V或–version:显示版本信息;
-w或–raw:显示RAW传输协议的连线状况;
-x或–unix:此参数的效果和指定”-A unix”参数相同;
–ip或–inet:此参数的效果和指定”-A inet”参数相同
(3)实例
netstat -a //列出所有端口
netstat -at //列出所有tcp端口
netstat -au //列出所有udp端口
1 2 3 在这里显示所有的TCP端口
这里写图片描述
netstat -l //只显示监听端口
netstat -lt //只列出所有监听 tcp 端口
netstat -lu //只列出所有监听 udp 端口
1 2 3 和上面的图相比,可以看到只显示出了监听状态的TCP端口
这里写图片描述
4、ifconfig

ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。 用法
(1)命令格式
ifconfig(参数)
(2)实例
这里写图片描述
eth0表示第一块网卡,可以看到这个网卡的信息
HWaddr表示网卡的物理地址即MAC地址,可以看到目前这个网卡的MAC地址是:00:0C:29:A7:C0:6C
inet addr用来表示网卡的IP地址,此网卡的IP地址是:192.168.1.106
广播地址Bcast:192.168.1.255
掩码地址Mask:255.255.255.0
lo是表示主机的回环地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。
(3)参数
add<地址>:设置网络设备IPv6的ip地址
del<地址>:删除网络设备IPv6的IP地址
down:关闭指定的网络设备
io_addr < I/O地址>:设置网络设备的I/O地址
irq< IRQ地址>:设置网络设备的IRQ;
media<网络媒介类型>:设置网络设备的媒介类型;
mem_start<内存地址>:设置网络设备在主内存所占用的起始地址;
metric<数目>:指定在计算数据包的转送次数时,所要加上的数目;
mtu<字节>:设置网络设备的MTU;
netmask<子网掩码>:设置网络设备的子网掩码;
tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址;
up:启动指定的网络设备;
-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理;
-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能; -promisc:关闭或启动指定网络设备的promiscuous模式;
IP地址:指定网络设备的IP地址;
网络设备:指定网络设备的名称。
5、route
route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。
要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在*/etc/rc.local中添加route命令来保证该路由设置永久有效。
用法
(1)命令格式
route(选项)(参数)
(2)选项
-A:设置地址类型;
-C:打印将Linux核心的路由缓存;
-v:详细信息模式;
-n:不执行DNS反向查找,直接显示数字形式的IP地址;
-e: netstat格式显示路由表;
-net:到一个网络的路由表;
-host:到一个主机的路由表。
(3)参数
Add:增加指定的路由记录
Del:删除指定的路由记录

Target:目的网络或目的主机
gw:设置默认网关
mss:设置TCP的最大区块长度(MSS),单位为MB
window:指定通过路由表的TCP连接的TCP窗口大小
dev:路由记录所表示的网络接口
(4)实例
显示当前路由,从图中可以看出加了选项-n的变化
这里写图片描述
删除和添加设置默认网关
这里写图片描述
6、arp
arp命令用于操作主机arp缓冲区,可以显示arp缓冲区的所有条目、删除指定条目或增加静态IP地址与MAC地址的对应关系
用法
(1)命令格式
arp(选项)(参数)
(2)选项
-a<主机>:显示arp缓冲区的所有条目
-H<地址类型>:指定arp指令使用的地址类型
-d<主机>:从arp缓冲区中删除指定主机的arp条目
-D:使用指定接口的硬件地址
-e:以Linux的显示风格显示arp缓冲区中的条目
-i<接口>:指定要操作arp缓冲区的网络接口
-s<主机> <硬件地址>:设置指定主机的IP地址与MAC地址的静态映射
-n:以数字方式显示arp缓冲区中的条目
-v:显示详细的arp缓冲区条目,包括缓冲区条目的统计信息
-f<文件>:设置主机的IP地址与MAC地址的静态映射
(3)参数
主机:查询arp缓冲区中指定主机的arp条目。
(4)实例
这里写图片描述
7、traceroute
traceroute命令用于追踪数据包在网络上传输时的全部路径,它默认发送的数据包大小是40字节 通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址 用法 (1)命令格式 traceroute(选项)(参数) (2)选项 -d:使用Socket层级的排错功能 -f<存活时间>:设置第一个检测数据包的存活数值TTL的大小 -F:设置勿离断位 -g<网关>:设置来源路由网关,最多可设置8个 -i<网络界面>:使用指定的网络界面送出数据包 -l:使用ICMP回应取代UDP资料信息 -m<存活数值>:设置检测数据包的最大存活数值TTL的大小 -n:直接使用IP地址而非主机名 -p<通信端口>:设置UDP传输协议的通信端口 -r:忽略普通的Routing Table,直接将数据包送到远端主机上 -s<来源地址>:设置本地主机送出数据包的TOS数值 -v:详细显示指令的执行过程 -w<超时秒数>:设置等待远端主机回报的时间 -x:开启或关闭数据包的正确性检验 (3)参数
主机:指定目的主机IP地址或主机名
(4)实例
这里写图片描述
从图中可以看出记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间; 在后面一部分我们会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。 8、hosthost命令是常用的分析域名查询工具,可以检测域名系统工作是否正常
用法
(1)命令格式
host(选项)(参数)
(2)选项
-a:显示详细的DNS信息
-c<类型> :指定查询类型,默认值为“IN”
-C:查询指定主机的完整SOA记录
-r:在查询域名时,不使用递归的查询方式
-t<类型> :指定查询第域名信息类型
-v:显示指令执行的详细信息
-a:显示详细的DNS信息;
-w:如果域名服务器没有给出应答信息,则一直等待,直到域名服务器给出应答
-W<时间> :指定域名查询的最长时间,如果在指定时间内域名服务器没有给出应答信息,则退出指令
-4:使用IPv4
-6:使用IPv6
(3)参数
主机:要查询的主机信息
(4)实例
这里写图片描述
9、tcpdump
tcpdump命令是一款抓取数据包的工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。
用法
(1)命令格式
tcpdump(选项)
(2)选项
-a:尝试将网络和广播地址转换成名称;
-c<数据包数目> :收到指定的数据包数目后,就停止进行倾倒操作;
-d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出;
-dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出;
-ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出;
-e:在每列倾倒资料上显示连接层级的文件头;
-f:用数字显示网际网络地址;
-F<表达文件> :指定内含表达方式的文件;
-i<网络界面> :使用指定的网络截面送出数据包;
-l:使用标准输出列的缓冲区;
-n:不把主机的网络地址转换成名字;
-N:不列出域名;
-O:不将数据包编码最佳化;
-p:不让网络界面进入混杂模式;
-q :快速输出,仅列出少数的传输协议信息;
-r<数据包文件> :从指定的文件读取数据包数据;
-s <数据包大小> :设置每个数据包的大小;
-S:用绝对而非相对数值列出TCP关联数;
-t:在每列倾倒资料上不显示时间戳记;
-tt:在每列倾倒资料上显示未经格式化的时间戳记;
-T <数据包类型> :强制将表达方式所指定的数据包转译成设置的数据包类型;
-v:详细显示指令执行过程;
-vv:更详细显示指令执行过程;
-x:用十六进制字码列出数据包资料;
-w <数据包文件> :把数据包数据写入指定的文件。
(3)实例
tcpdump:监视第一个网络接口上流过的所有数据包(带上-i选项,是监视指定网络接口)
————————————————
版权声明:本文为CSDN博主「Amberda」的编辑整理,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34021920/article/details/80543315

100次点赞 100次阅读