侧边栏壁纸
  • 累计撰写 29 篇文章
  • 累计创建 6 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux-Shell脚本应用

Administrator
2026-02-01 / 0 评论 / 0 点赞 / 2 阅读 / 0 字

Linux-Shell 脚本应用

应用 1——自动更新 apt 源

实现功能:确认当前用户系统,为用户自动换源(阿里源)。

相关前置

  • lsb-release -cs:获取当前 Linux 发行版的代号,常用于 Ubuntu、Debian 系列系统。

  • id -u:查看当前用户具体的 UID

  • sed 替换:

    sed -i 's/原本的字符串/你想替换成什么/g' 文件路径
    
    sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
    	#将/etc/apt/sources.list文件中deb.debian.org替换为mirrors.ustc.edu.cn
    

脚本实现

脚本——自动更新 apt 源

应用 2——自动安装 docker 等

实现功能:安装、卸载 Docker;配置、清除 docker 代理;清理 dockers 缓存;安装、卸载 docker-compose。

相关前置

为 Docker 设置代理,让其通过代理连接。——开启该方式,则无需开启 TUN(虚拟网卡)模式(两种方式二选一即可)。

为 Docker 设置网络代理

  1. 创建新文件夹

    mkdir /etc/systemd/system/docker.service.d
    
  2. 新建文件

    mk /etc/systemd/system/docker.service.d/http-proxy.conf
    
  3. 在文件中写入内容

    [Service]
    Environment="HTTP_PR0XY=s0cks5://物理机VMnet8ip:7897/"
    Environment="HTTPS_PR0XY=S0cks5://物理机VMnet8ip:7897/"
    Environment="No_PROxY=localhost,127.0.0.1"
    
  4. 重新加载配置

    systemctl daemon-reload
    
  5. 重启 docker

    systemctl restart docker 
    

一次性删除所有容器与镜像

docker ps -a -q 				#一次显示所有容器ID
docker rm -f `docker ps -a -q` 	#一次删除所有容器

docker images -q 				#一次显示所有镜像ID
docker rmi `docker images -q` 	#一次删除所有镜像

自动删除软件

 apt autoremove docker		#自动删除docker

脚本实现

脚本——自动安装 docker 等

应用 3——JDK 安装与管理

实现功能:自动安装 JDK 各个版本,并支持版本切换。

相关前置

JDK、JRE、JVM

  • JVM(Java Virtual Machine),Java 虚拟机。

  • JRE(Java Runtime Environment),Java 运行环境,包含了 JVM 和 Java 的核心类库(Java API)。

  • JDK(Java Development Kit)称为 Java 开发工具,包含了 JRE 和开发工具。

jdk 常用版本

  • 7/8:做安全常用,有大量常见安全工具。

  • 11/17:常见的 java 程序。

  • 22:支持 Burp Suite,一个非常流行的网络安全测试工具,尤其用于 Web 渗透测试。

Linux 安装 java

wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.rpm
rpm -ivh jdk-8u202-linux-x64.rpm
update-alternatives --install /usr/bin/java java /usr/share/jdk8/$dir_name/bin/java 1

切换 java 版本

#Linux切换版本命令
update-alternatives --config

#交互式切换
update-alternatives --config java

#非交互式切换
update-alternatives --set java /usr/share/jdk8/$dir_name/bin/java

下载文件

下载到当前目录
wget URL地址

下载到指定目录,并重命名下载的文件
wget URL地址 -O 指定的下载目录/重命名的文件
wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz -O /usr/share/jdk8.tar.gz

脚本实现

脚本——JDK 安装与管理

应用 4——一键配置网络

实现功能:通过识别系统,用户输入 ip、netmask、gateway、DNS 来配置网络,以及恢复 DHCP

相关前置

setenv

set		#查看系统内置变量
env		#查看环境变量

env

set

查看

环境变量

所有变量(环境 + 局部 + 函数 + 选项)

设置

临时设置环境变量执行命令

配置 Shell 行为,或查看变量

用途

运行程序时临时改环境

脚本调试,Shell 行为控制

影响范围

只影响运行时命令

影响当前 Shell 环境

正则表达式

正则表达式 是一种用来匹配字符串中字符的组合,可以用来匹配和搜索文本等。

$?

  • $? 是一个特殊的 退出状态变量,用于获取 上一条命令或函数的执行结果(返回值)

    • 0:表示 成功

    • 0:表示 失败,具体含义由命令决定。

EOF 标签

  • EOF(End Of File)是一个常见的 标签,通常用于 多行输入定义文本块,它的作用是标记输入的开始和结束,使得脚本可以方便地处理多行文本。

    cat > file << EOF
    内容
    EOF
    

UIDEUID

特性

UID

EUID

全称

User ID

Effective User ID

作用

标识进程的归属用户

决定进程的实际权限

默认值

启动进程的用户 UID

通常与 UID 相同

可修改性

一般不可变(除非特权操作)

可通过 setuid 临时变更

权限检查

不直接参与权限判断

系统根据 EUID 判断访问权限

date

  • date 用于显示或设置系统日期和时间

date "+%Y-%m-%d %H:%M:%S"

符号

含义

示例

%Y

四位年份

2024

%m

两位月份(01-12)

06

%d

两位日期(01-31)

05

%H

24小时制小时(00-23)

15

%M

分钟(00-59)

30

%S

秒(00-59)

45

%A

星期全称

Wednesday

%a

星期缩写

Wed

%B

月份全称

June

%b

月份缩写

Jun

%Z

时区名称

UTC

  • %s:时间戳。

脚本实现

脚本——一键配置网络

0

评论区