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
脚本实现
应用 2——自动安装 docker 等
实现功能:安装、卸载 Docker;配置、清除 docker 代理;清理 dockers 缓存;安装、卸载 docker-compose。
相关前置
为 Docker 设置代理,让其通过代理连接。——开启该方式,则无需开启 TUN(虚拟网卡)模式(两种方式二选一即可)。
为 Docker 设置网络代理
创建新文件夹
mkdir /etc/systemd/system/docker.service.d
新建文件
mk /etc/systemd/system/docker.service.d/http-proxy.conf
在文件中写入内容
[Service] Environment="HTTP_PR0XY=s0cks5://物理机VMnet8ip:7897/" Environment="HTTPS_PR0XY=S0cks5://物理机VMnet8ip:7897/" Environment="No_PROxY=localhost,127.0.0.1"
重新加载配置
systemctl daemon-reload
重启 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
脚本实现
应用 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
脚本实现
应用 4——一键配置网络
实现功能:通过识别系统,用户输入
ip、netmask、gateway、DNS
来配置网络,以及恢复DHCP
。
相关前置
set
和 env
set #查看系统内置变量
env #查看环境变量
env | set | |
---|---|---|
查看 | 环境变量 | 所有变量(环境 + 局部 + 函数 + 选项) |
设置 | 临时设置环境变量执行命令 | 配置 Shell 行为,或查看变量 |
用途 | 运行程序时临时改环境 | 脚本调试,Shell 行为控制 |
影响范围 | 只影响运行时命令 | 影响当前 Shell 环境 |
正则表达式
正则表达式 是一种用来匹配字符串中字符的组合,可以用来匹配和搜索文本等。
$?
$?
是一个特殊的 退出状态变量,用于获取 上一条命令或函数的执行结果(返回值)。0
:表示 成功。- 非
0
:表示 失败,具体含义由命令决定。
EOF
标签
EOF
(End Of File)是一个常见的 标签,通常用于 多行输入 或 定义文本块,它的作用是标记输入的开始和结束,使得脚本可以方便地处理多行文本。cat > file << EOF 内容 EOF
UID
和 EUID
特性 | 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
:时间戳。