【Linux】【实战系列】10 分钟掌握日常开发中 Linux 网络处理相关命令

  • hello,大家好,我是 Lorin,上一期和大家分享一期日常开发中常用的 Linux 文件和文本命令实战教学,这一期给大家带来常用的网络处理命令实战。

lsof

  • lsof(list open files)是一个列出当前系统打开文件的工具,日常开发中常用于查看端口占用情况。
bash 复制代码
// 显示所有打开的端口
lsof -i
bash 复制代码
// 查看 8080 端口占用情况
lsof -i:8000

nodejs  26993 root   10u  IPv4 37999514      0t0  TCP *:8000 (LISTEN)

// 其它一些常见用法
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -d 4:显示使用fd为4的进程

netstat

  • netstat 用于查看网络状态。日常工作中常用于观察服务器网络连接、端口占用。
bash 复制代码
命令格式:
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]

常用参数:
常用参数:
-a或--all 显示所有连线中的Socket
-p或--programs 显示正在使用Socket的程序识别码和程序名称
-n或--numeric 直接使用IP地址,而不通过域名服务器(显示具体端口号)
-t或--tcp 显示TCP传输协议的连线状况
-u或--udp 显示UDP传输协议的连线状况

// 如查看所有 TCP 网络连接
[root@iZwz97fphe0t194uzxhm8lZ ~]# netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:5355            0.0.0.0:*               LISTEN      833/systemd-resolve
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      880/sshd
tcp        0      0 172.19.229.159:22       183.14.134.96:25981     ESTABLISHED 25803/sshd: root [p
tcp        0      0 172.19.229.159:55656    100.100.21.100:80       TIME_WAIT   -
tcp        0      0 172.19.229.159:55658    100.100.21.100:80       TIME_WAIT   -
tcp        0      0 172.19.229.159:55648    100.100.21.100:80       TIME_WAIT   -
tcp        0      0 172.19.229.159:60706    100.100.0.70:80         TIME_WAIT   -
tcp6       0      0 :::5355                 :::*                    LISTEN      833/systemd-resolve
tcp6       0      0 :::80                   :::*                    LISTEN      2801/docker-proxy
tcp6       0      0 :::443                  :::*                    LISTEN      2790/docker-proxy
tcp6       0      0 :::1024                 :::*                    LISTEN      3031/docker-proxy
tcp6       0      0 :::1025                 :::*                    LISTEN      3020/docker-proxy


// 查看 80 端口占用的进程和进程号 可以和上一期学的 grep 命令组合使用
[root@iZwz97fphe0t194uzxhm8lZ ~]# netstat -atnp | grep 80
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      880/sshd
tcp        0      0 172.19.229.159:44072    100.100.21.100:80       TIME_WAIT   -
tcp        0      0 172.19.229.159:44070    100.100.21.100:80       TIME_WAIT   -
tcp        0      0 172.19.229.159:49126    100.100.0.70:80         TIME_WAIT   -
tcp        0      0 172.19.229.159:44078    100.100.21.100:80       TIME_WAIT   -
tcp        0      0 172.19.229.159:44076    100.100.21.100:80       TIME_WAIT   -
tcp6       0      0 :::80                   :::*                    LISTEN      2801/docker-proxy

ping

  • ping 命令用于检测与另一个主机之间的网络连接,日常开发中常用于检测服务器是否在线,但无法 ping 通不等于服务不在线,因为服务器端可以主动关闭该功能。
  • 使用 ICMP(Internet Control Message Protocol) 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息。
ini 复制代码
命令格式:
ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]

常用参数:
-d 使用Socket的SO_DEBUG功能
-c <完成次数> 设置完成要求回应的次数
-i<间隔秒数> 指定收发信息的间隔时间
-R 记录路由过程
-t<存活数值> 设置存活数值TTL的大小
-s<数据包大小> 设置数据包的大小

// 示例
[root@iZwz97fphe0t194uzxhm8lZ ~]# ping -i 3 -c 3 -s 1024 -t 255 baidu.com
PING baidu.com (39.156.66.10) 1024(1052) bytes of data.
1032 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=49 time=50.1 ms
1032 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=2 ttl=49 time=50.1 ms
1032 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=3 ttl=49 time=50.1 ms

--- baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 11ms
rtt min/avg/max/mdev = 50.116/50.119/50.123/0.182 ms

// -i 3 执行周期为 3 秒
// -c 3 要求会员次数 3 次
// -s 1024 包大小 1024 
// -t 设置TTL值为 255

nslookup

  • 是用于查询域名系统(DNS)信息的命令行工具。它可以用来查找域名的IP地址,或者反向查找IP地址对应的域名。
yaml 复制代码
命令格式:
nslookup domain [dns-server]

// 使用示例 使用默认域名服务器
[root@iZwz97fphe0t194uzxhm8lZ ~]# nslookup baidu.com
Server:         100.100.2.136
Address:        100.100.2.136#53

Non-authoritative answer:
Name:   baidu.com
Address: 110.242.68.66
Name:   baidu.com
Address: 39.156.66.10

// 使用指定域名服务器解析
[root@iZwz97fphe0t194uzxhm8lZ ~]# nslookup baidu.com 8.8.8.8
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   baidu.com
Address: 39.156.66.10
Name:   baidu.com
Address: 110.242.68.66

ssh

  • Linux SSH(Secure Shell)是一种用于远程管理和安全通信的协议和工具。它允许用户通过网络安全地远程登录到其他计算机,并执行各种操作,日常工作中常用于登录服务器。
  • SSH使用非对称加密来建立连接,并在连接建立后使用对称加密来保护通信内容。这种方法确保了数据的机密性和完整性。
css 复制代码
命令格式:
ssh [选项] [参数]

常用参数:
-p:指定远程服务器上的端口
-i:指定身份(私钥)文件

// 常用方式
# ssh 用户名@远程服务器地址
ssh user1@172.24.210.101
# 指定端口
ssh -p 2211 root@140.206.185.170

ssh-keygen

  • 除了使用密码登录的方式,我们还可以生成秘钥文件实现免密登录。
java 复制代码
// ssh-keygen # 为当前用户生成 ssh 公钥 + 私钥
// 如果你使用了密码,那么请确保添加了 -o 选项,它会以比默认格式更能抗暴力破解的格式保存私钥
$ ssh-keygen -o
Generating public/private rsa key pair.
Enter file in which to save the key (/home/schacon/.ssh/id_rsa):
Created directory '/home/schacon/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/schacon/.ssh/id_rsa.
Your public key has been saved in /home/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local

// 将当前用户的公钥复制到需要 ssh 的服务器的 ~/.ssh/authorized_keys,实现免密登录
ssh-copy-id user@ip:port

scp

  • SCP(Secure Copy Protocol)是一种用于在远程系统之间安全复制文件的协议。它通过SSH(Secure Shell)协议进行加密通信,确保数据传输的安全性。SCP通常用于将文件从一个计算机复制到另一个计算机,或者从本地计算机上传到远程服务器,反之亦然。
ruby 复制代码
命令格式:
scp [参数] [本地文件] [远程地址]

常用参数:
-r:递归复制怎么目录

// 使用示例
// 从本地计算机上传文件到远程服务器
scp /path/to/local/file username@remote_server:/path/to/remote/directory

// 从远程服务器下载文件到本地计算机
scp username@remote_server:/path/to/remote/file /path/to/local/directory

// 从本地计算机上传整个目录到远程服务器
scp -r /path/to/local/directory username@remote_server:/path/to/remote/directory

sftp

  • SFTP(Secure File Transfer Protocol)是一种基于SSH协议的安全文件传输协议,用于在本地计算机和远程服务器之间以加密和安全的方式传输文件。与SCP不同,SFTP提供了更多的文件管理功能,允许用户在本地和远程系统之间进行更灵活的文件操作,包括上传、下载、删除、重命名文件,以及浏览远程目录等。

  • 使用示例

ruby 复制代码
// 连接到远程服务器
sftp username@remote_server

// 上传文件到远程服务器
put /path/to/local/file /path/on/remote/server

// 下载文件到本地计算机
get /path/on/remote/server /path/to/local/directory

// 列出远程服务器上的文件和目录
ls

// 或者列出特定目录
ls /path/on/remote/server

// 删除远程服务器上的文件
rm /path/on/remote/server/filename

// 重命名远程服务器上的文件
rename old_filename new_filename

// 退出SFTP会话
exit

网络工具 curl

  • curl 是一个强大的命令行工具,用于在Unix、Linux和类Unix系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP、SCP、SFTP、LDAP等,可以用来发送请求并接收来自Web服务器和其他网络服务的响应。
  • 下面我们主要介绍一些常见的用法:
csharp 复制代码
命令格式:
curl [选项] [URL]

常用参数:
-v:选项来显示HTTP请求和响应的详细信息
-i:选项来显示HTTP响应头信息
-X:选项来指定HTTP请求方法
-x:选项来指定代理服务器
-u:选项来指定用户名和密码
-H:选项来指定HTTP头部信息

# 使用示例
// 发送 get 请求
curl https://www.example.com

// 发送 post 请求
// 使用-X选项来指定HTTP请求方法,通常与-d选项一起使用以发送POST数据
curl -X POST -d "key1=value1&key2=value2" https://www.example.com/api

// 发送HTTP请求时携带HTTP头部信息
curl -H "Authorization: Bearer <token>" https://api.example.com/resource

// 使用代理服务器
curl -x http://proxy.example.com:8080 https://www.example.com

// 保存下载文件
curl -o outputfile.txt https://www.example.com/file.txt

// 使用用户名和密码进行HTTP基本认证
curl -u username:password https://www.example.com/secure/resource

网络工具 wget

  • wget是一个在命令行中常用的工具,用于从网络上下载文件。它支持HTTP、HTTPS、FTP等多种协议,并提供了丰富的选项,使得文件下载变得非常灵活和强大。
  • 下面介绍一些常见用法:
less 复制代码
命令格式:
wget [选项] [URL]

常用参数:
-b:选项来在后台下载文件
-O:选项来指定保存的文件名
-c:选项来启用断点续传,如果下载中断,可以恢复下载

// 使用wget下载文件,将文件保存在当前工作目录
wget https://www.example.com/file.txt

// 使用-O选项来指定保存的文件名
wget -O myfile.txt https://www.example.com/file.txt

// 后台下载
wget -b https://www.example.com/largefile.zip

// 限速下载速度
wget --limit-rate=100k https://www.example.com/largefile.zip

最后

  • 如果文章对你有帮助,请一键三连,关注、点赞、收藏,你的支持是我创作的最大动力,谢谢大家。
相关推荐
耶啵奶膘4 分钟前
uniapp-是否删除
linux·前端·uni-app
NiNg_1_23433 分钟前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
2401_850410831 小时前
文件系统和日志管理
linux·运维·服务器
XMYX-02 小时前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
Chrikk2 小时前
Go-性能调优实战案例
开发语言·后端·golang
幼儿园老大*2 小时前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue2 小时前
go语言连续监控事件并回调处理
开发语言·后端·golang
杜杜的man2 小时前
【go从零单排】go语言中的指针
开发语言·后端·golang
二十雨辰4 小时前
[linux]docker基础
linux·运维·docker
customer084 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源