网络工具

Linux 中提供了强大的网络工具包,用于监测系统中的网络通信状态。

查询网络服务和端口

netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

列出所有端口 (包括监听和未监听的):

1
$netstat -a

列出所有 tcp 端口:

1
$netstat -at

列出所有有监听的服务状态:

1
$netstat -l

使用 netstat 工具查询端口:

1
2
3
4
5
6
$netstat -antp | grep 6379
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 25501/redis-server

$ps 25501
PID TTY STAT TIME COMMAND
25501 ? Ssl 28:21 ./redis-server ./redis.conf

查看文件状态

lsof(list open files)是一个列出当前系统打开文件的工具。在 linux 环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等; 在查询网络端口时,经常会用到这个工具。

查询 7902 端口现在运行什么程序:

1
2
3
4
5
6
7
8
9
10
11
# 分为两步 
# 第一步,查询使用该端口的进程的 PID;
$lsof -i:7902
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
WSL 30294 tuapp 4u IPv4 447684086 TCP 10.6.50.37:tnos-dp (LISTEN)

# 查到 30294
# 使用 ps 工具查询进程详情:
$ps -ef | grep 30294
tdev5 30294 26160 0 Sep10 ? 01:10:50 tdesl -k 43476
root 22781 22698 0 00:54 pts/20 00:00:00 grep 11554

注解

以上介绍 lsof 关于网络方面的应用,这个工具非常强大,需要好好掌握,详见 lsof 一切皆文件 ;

网络路由

查看路由状态:

1
$route -n

发送 ping 包到地址 IP:

1
$ping IP

探测前往地址 IP 的路由路径:

1
$traceroute IP

DNS 查询,寻找域名 domain 对应的 IP:

1
$host domain

反向 DNS 查询:

1
$host IP

镜像下载

直接下载文件或者网页:

1
$wget url

常用选项:

  • –limit-rate : 下载限速
  • -o:指定日志文件;输出都写入日志;
  • -c:断点续传

ftp sftp lftp ssh

SSH 登陆:

1
$ssh ID@host

ssh 登陆远程服务器 host,ID 为用户名。

ftp/sftp 文件传输:

1
$sftp ID@host

登陆服务器 host,ID 为用户名。sftp 登陆后,可以使用下面的命令进一步操作:

  • get filename # 下载文件
  • put filename # 上传文件
  • ls # 列出 host 上当前路径的所有文件
  • cd # 在 host 上更改当前路径
  • lls # 列出本地主机上当前路径的所有文件
  • lcd # 在本地主机更改当前路径

lftp 同步文件夹 (类似 rsync 工具):

1
2
lftp -u user:pass host
lftp user@host:~> mirror -n

网络复制

将本地 localpath 指向的文件上传到远程主机的 path 路径:

1
$scp localpath ID@host:path

以 ssh 协议,遍历下载 path 路径下的整个文件系统,到本地的 localpath:

1
$scp -r ID@site:path localpath