Linux之网络相关命令——ping、tranceroute、netstat、ftp、lftp、wget、ssh、scp、sftp

本文详细介绍Linux下常用的网络命令,如ping、traceroute、netstat、ftp、lftp、wget、ssh、scp和sftp,涵盖网络检测、文件传输及安全通信。通过实际案例展示如何使用这些命令解决网络问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网络连接方面,Linux可以说是万能的. Linux工具可以建立各种网络系统及应用,包括防火墙、路由器、域名服务器、NAS(网络附加存储)盒等。
这里主要讲一些经常用到的命令,涉及网络检测以及文件传输等方面。所涉及的命令包括:

  • ping: 向网络主机发送 ICMP ECHO_REQUEST数据包
  • traceroute: 显示数据包到网络主机的路由路径
  • netstat: 显示网络连接、路由表、网络接口数据、伪连接以及多点传送成员等信息
  • ftp:文件传输命令
  • lftp:改善后的文件传输命令
  • wget:非交互式网络下载器
  • ssh: OpenSSH(SSH协议的免费开源实现)版的SSH客户端(远程系统登录命令)。
  • scp: srcure copy的缩写,是远程复制文件命令。
  • sftp: secure file transfer program的缩写,安全文件传输程序。

0.参考书籍

《Linux命令行大全》 [美] William E. Shotts. Jr 著 郭光伟 郝记生 译, 人民邮电出版社

如有侵权,可联系博主删除。

1. 检查、检测网络

1.1 ping—向网络主机发送特殊数据包

ping命令会向指定的网络户籍发送特殊网络数据包IMCP ECHO_REQUEST.多数网络设备收到该数据包后会做出回应,通过此法即可验证网络连接是否正常,

$ ping baidu.com
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79: icmp_seq=1 ttl=44 time=27.7 ms
64 bytes from 39.156.69.79: icmp_seq=2 ttl=44 time=27.1 ms
64 bytes from 39.156.69.79: icmp_seq=3 ttl=44 time=27.2 ms
64 bytes from 39.156.69.79: icmp_seq=4 ttl=44 time=27.0 ms
...
^C
--- baidu.com ping statistics ---
32 packets transmitted, 32 received, 0% packet loss, time 31129ms

一旦程序启动,ping命令便以既定的时间间隔(默认1s)传送数据包直到该命令被打断。按下Ctrl+C结束。
数据包丢失0%说明网络运行正常。

1.2 traceroute—跟踪网络数据包的传输路径

traceroute程序会显示文件通过网络从本地系统传输到指定主机过程中所有停靠点的列表。
例如

$ traceroute baidu.com
 1  10.20.3.1 (10.20.3.1)  5.509 ms  5.782 ms  6.082 ms
 2  10.250.1.1 (10.250.1.1)  0.206 ms  0.198 ms  0.179 ms
 3  * * *
 4  224.fudan.edu.cn (202.120.224.3)  1.518 ms  2.661 ms  2.050 ms
 5  * * *
 6  10.255.19.1 (10.255.19.1)  3.072 ms  2.929 ms  2.983 ms
 7  10.255.249.45 (10.255.249.45)  1.623 ms  1.311 ms  1.216 ms
 8  10.255.38.250 (10.255.38.250)  1.414 ms  1.532 ms  1.719 ms
 9  202.112.27.1 (202.112.27.1)  2.414 ms  2.153 ms  3.080 ms
10  101.4.115.105 (101.4.115.105)  2.367 ms  2.299 ms  2.217 ms
11  101.4.117.30 (101.4.117.30)  21.143 ms  23.262 ms  22.130 ms
12  101.4.116.118 (101.4.116.118)  29.939 ms  29.975 ms  30.451 ms
13  101.4.112.69 (101.4.112.69)  27.647 ms  27.083 ms  27.551 ms
14  101.4.113.110 (101.4.113.110)  30.981 ms  31.284 ms  31.169 ms
15  101.4.116.66 (101.4.116.66)  30.915 ms  28.574 ms  28.971 ms
16  101.4.117.110 (101.4.117.110)  31.936 ms  32.072 ms  32.223 ms
17  202.97.57.173 (202.97.57.173)  29.062 ms 202.97.88.233 (202.97.88.233)  27.312 ms  27.359 ms
18  * 180.149.159.10 (180.149.159.10)  27.638 ms *
19  36.110.244.94 (36.110.244.94)  65.536 ms * *
20  * * *
21  220.181.182.34 (220.181.182.34)  28.894 ms 220.181.17.90 (220.181.17.90)  29.379 ms *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

说明从测试系统到https://www.baidu.com/网站的连接需要经过30个路由器,对于提供身份信息的路由器,列表列出了主机名、IP地址以及运行状态信息。信息包含了从本地系统到路由器3次往返时间。
而对于那些因为路由器配置、网络堵塞或是防火墙等等原因不提供身份信息的路由器,则直接用星号行表示。

1.3 netstat—检查网络设置及相关统计数据

netstat使用-ie选项,可以检查系统中的网络接口信息。

$ netstat -ie

enp13s0f1 Link encap:Ethernet  HWaddr a0:42:3f:37:59:55
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 2001:da8:8001:263:a242:3fff:fe37:5955/64 Scope:Global
          inet6 addr: fe80::a242:3fff:fe37:5955/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:526542080 errors:0 dropped:1452651 overruns:703 frame:0
          TX packets:332330448 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:618633150746 (618.6 GB)  TX bytes:217758725891 (217.7 GB)
          Memory:c7200000-c721ffff

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:155800939 errors:0 dropped:0 overruns:0 frame:0
          TX packets:155800939 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:221954702938 (221.9 GB)  TX bytes:221954702938 (221.9 GB)

以上输出信息显示,测试系统有两个网络端口:第一个称为enp13s0f1,是以太网端口;第二个称为lo,是系统用来自己访问自己的回环虚拟接口。
对于网络接口进行日常诊断,关键是看能否在每个接口信息第四行的开头找到UP这个词以及能否在第二行的inet addr字段找到有效的IP地址。第四行的UP代表着该网络接口已启动,而对于使用动态主机配置协议的系统(DHCP),inter addr字段里边的有效IP地址则说明了DHCP正在工作。

使用-r选项将显示内核的网络路由表,显示了网络之间传送数据包时网络的配置情况。

$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0       *               255.255.255.0   U         0 0          0 enp13s0f1
192.168.1.1     0.0.0.0              UG          0  0           0  eth0  

2.通过网络传输文件

2.1 ftp—采用FTP(文件传输协议)传输文件

ftp是Linux比较经典的命令之一,由File Transfer Protocol协议缩写而来.
FTP原来的表现形式并不安全,因为它以明文的方式传送账户名以及密码。这意味着这些信息并没有加密,任何一个接触网络的人都能看到它们。鉴于此,几乎所有使用FTP协议进行的网络文件传输都是由匿名FTP服务器处理的。匿名服务器允许任何人使用anonymous登录名以及无意义的密码登录。

2.2 lftp—更好的ftp(文件传输协议)

lftp与传统的ftp程序功能类似,但有很多其它便利的功能,包括多协议支持(HTTP)、下载失败时自动重新尝试、后台进程支持、Tab键完成文件名输入等许多其他功能。

2.3 wget—非交互式网络下载工具

wget既可以用于从网站上下载内容,也可以从FTP站点下载,单个文件、多个文件甚至整个网址都可以被下载。

$ wget http://linuxcommand.org/index.php
--2020-06-12 20:02:13--  http://linuxcommand.org/index.php
Resolving linuxcommand.org (linuxcommand.org)... 216.105.38.10
Connecting to linuxcommand.org (linuxcommand.org)|216.105.38.10|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4005 (3.9K) [text/html]
Saving to: ‘index.php’

index.php                       100%[======================================================>]   3.91K  --.-KB/s    in 0s

2020-06-12 20:02:15 (305 MB/s) - ‘index.php’ saved [4005/4005]

从http://linuxcommand.org下载了第一页。

3. 与远程主机的安全通信

3.1 ssh—安全登录远程计算机

SSH(Secure Shell)协议是为了解决明文传送的问题。SSH协议包括两个部分:一个是运行在远程主机上的SSH服务端,用来监听端口22上可能过来的连接请求;另一个是本地系统上SSH客户端,用来与远程服务器进行通信。
多数Linux发行版都采用BSD项目的openSSH(SSH的免费开源实现)方法实现SSH。一些版本如Red Hat会默认包含客户端包和服务端包,而像Ubuntu则仅仅提供客户端包,系统要接受远程连击,必须安装、配置以及运行OpenSSH-server软件包,并且必须允许TCP端口22上进来的网络连接。

例如使用ssh客户端程序来建立与远程主机romote-sys的连接的例子

$ ssh remote-sys

第一次尝试连接的时候,由于ssh程序从来没有接触过此远程主机,所以会跳出一条“不能确定远程主机真实性”的消息。需要输入yes来接受远程主机的身份,一旦建立了连接,会提示用户盲输密码。

输入正确密码后,远程系统的shell提示符便出现了。
远程shell对话将一直开启,直到用户在该对话框中输入exit命令断开与远程系统的连接。连接一旦断开后,本地shell会话恢复,本地shell提示符又重新出现。

以下一段是博主个人经验
我们常用的的实际上是ssh username@192.168.20.55(IP地址) 这样形式的,有些端口不是默认的22,需要加参数 -p11524(端口号)

ssh命令除了能开启远程系统上的shell会话外,还能在远程系统上执行单个简单的命令.

$ ssh romote-sys free

3.2 scp和sftp—安全传输文件

OpenSSH软件包含了两个使用SSH加密隧道进行网络间文件复制的程序,scp(secure copy)便是其中之一。例如从remote-sys远程系统的home目录中将doc.txt的文件复制到本地系统。

$ scp remote-sys:doc.txt .

如果不是本地系统的用户名登录远程系统,那么需要在远程主机名前添加将要登录的远程系统的账户名

$ scp bob@remote-sys:doc.txt

如果是文件夹的话,需要加参数-r
另外一个SSH文件复制程序是sftp。顾名思义,它是ftp程序的安全版本。sftp与ftp很相似,只是sftp采用SSH加密隧道传输信息而不是以明文方式传输。另外一个优点是不需要远程服务器运行FTP服务器,仅仅需要SSH服务器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值