新增dii、ghd、cvs工具;更新README.md文件
This commit is contained in:
parent
21df4c9750
commit
7f760dd608
127
README.md
127
README.md
@ -1,3 +1,126 @@
|
|||||||
# shell_tools
|
# Shell 工具集
|
||||||
|
|
||||||
Shell 脚本工具
|
## ghd
|
||||||
|
|
||||||
|
GitHub 文件加速下载工具,支持 `github.com` 和 `raw.githubusercontent.com` 域名。
|
||||||
|
|
||||||
|
**所需依赖:**
|
||||||
|
|
||||||
|
- 无需依赖,导入后直接使用即可
|
||||||
|
|
||||||
|
**参数说明:**
|
||||||
|
|
||||||
|
- `$1` :需要下载的GitHub文件的URL
|
||||||
|
|
||||||
|
**使用方式:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ghd 需要下载的GitHub文件的URL
|
||||||
|
```
|
||||||
|
|
||||||
|
示例:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ghd https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-linux-x86_64
|
||||||
|
```
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
## dii
|
||||||
|
|
||||||
|
获取 Docker Hub 镜像信息工具
|
||||||
|
|
||||||
|
**所需依赖:**
|
||||||
|
|
||||||
|
- skopeo(通过包管理器直接安装即可,如: `zypper install -y skopeo` 或 `yum install -y skopeo`)
|
||||||
|
- jq(通过包管理器直接安装即可,如: `zypper install -y jq` 或 `yum install -y jq`)
|
||||||
|
|
||||||
|
**参数说明:**
|
||||||
|
|
||||||
|
- `$1` :Docker镜像名称
|
||||||
|
- `$2` :是否仅查询镜像Tag
|
||||||
|
|
||||||
|
**使用方式:**
|
||||||
|
|
||||||
|
- 查询全部信息
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dii Docker镜像名称
|
||||||
|
```
|
||||||
|
|
||||||
|
示例:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dii mysql
|
||||||
|
```
|
||||||
|
|
||||||
|
- 仅查询 Tgs
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dii Docker镜像名称 t
|
||||||
|
```
|
||||||
|
|
||||||
|
示例:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dii mysql t
|
||||||
|
```
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
## cvs
|
||||||
|
|
||||||
|
使用 ClamAV 扫描病毒工具。
|
||||||
|
|
||||||
|
**所需依赖:**
|
||||||
|
|
||||||
|
- 无需依赖,导入后直接使用即可
|
||||||
|
|
||||||
|
**参数说明:**
|
||||||
|
|
||||||
|
- `$1` : 需要扫描的目录,不配置时默认全盘扫描
|
||||||
|
- `$2` : 病毒文件的处理方式,不配置时默认为 `2`
|
||||||
|
- `0` : 不处理;
|
||||||
|
- `1` : 复制到指定目录;
|
||||||
|
- `2` : 移动至指定目录;
|
||||||
|
- `3` : 直接删除(不推荐)
|
||||||
|
- `$3` : 工作目录,用于输出日志、存放病毒文件,不配置时默认为 `/opt/clamav` 目录
|
||||||
|
- `$4` : 包管理器,支持 `yum`、`zypper`,不配置时默认根据操作系统自动选择
|
||||||
|
|
||||||
|
**使用方式:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cvs 需要扫描的目录 处理方式 工作目录 包管理器
|
||||||
|
```
|
||||||
|
|
||||||
|
示例:
|
||||||
|
|
||||||
|
- 全盘扫描,使用默认配置
|
||||||
|
``` bash
|
||||||
|
cvs
|
||||||
|
```
|
||||||
|
|
||||||
|
- 扫描 HOME 目录,使用默认配置
|
||||||
|
``` bash
|
||||||
|
cvs /home
|
||||||
|
```
|
||||||
|
|
||||||
|
- 全盘扫描,不处理病毒文件
|
||||||
|
``` bash
|
||||||
|
cvs / 0
|
||||||
|
```
|
||||||
|
|
||||||
|
- 扫描 HOME 目录,不处理病毒文件
|
||||||
|
``` bash
|
||||||
|
cvs /home 0
|
||||||
|
```
|
||||||
|
|
||||||
|
- 全盘扫描,将日志文件保存至 `/tmp/clamav` 目录,同时将扫描出的病毒文件也移动至此目录
|
||||||
|
``` bash
|
||||||
|
cvs / 2 /tmp/clamav
|
||||||
|
```
|
||||||
|
|
||||||
|
- 扫描 HOME 目录,将日志文件保存至 `/tmp/clamav` 目录,同时将扫描出的病毒文件也移动至此目录
|
||||||
|
``` bash
|
||||||
|
cvs /home 2 /tmp/clamav
|
||||||
|
```
|
||||||
|
165
cvs
Executable file
165
cvs
Executable file
@ -0,0 +1,165 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 使用 ClamAV 扫描病毒脚本
|
||||||
|
|
||||||
|
## 参数配置
|
||||||
|
### 版本号
|
||||||
|
VERSION=0.2.0
|
||||||
|
### 当前的日期、日期时间
|
||||||
|
date=`date +%Y%m%d`
|
||||||
|
datetime=`date +%Y%m%d`_`date +%H%M%S`
|
||||||
|
### 需要扫描的文件夹(绝对路径)
|
||||||
|
scanDir=${1:-/}
|
||||||
|
### 病毒文件处理模式【0:不处理,1:复制到指定目录、2:移动至指定目录、3:直接删除(不推荐)】
|
||||||
|
model=${2:-2}
|
||||||
|
### 工作目录
|
||||||
|
workPath=${3:-/opt/clamav}
|
||||||
|
### 包管理器【yum:YUM,dnf:DNF,zypper:ZYPPER】
|
||||||
|
packageInstaller=${4:-yum}
|
||||||
|
### 病毒文件复制/转移文件夹(仅 model 为 1、2 时生效)
|
||||||
|
virusPath=${workPath}/scan_${datetime}/virus
|
||||||
|
### 日志文件目录
|
||||||
|
logsPath=${workPath}/scan_${datetime}/logs
|
||||||
|
### 疑似病毒文件数量
|
||||||
|
infectedFileNumber=0
|
||||||
|
|
||||||
|
## 相关方法
|
||||||
|
## 帮助信息
|
||||||
|
help () {
|
||||||
|
echo 'Usage: cvs 需要扫描的目录 处理方式 工作目录 包管理器'
|
||||||
|
echo '参数说明:'
|
||||||
|
echo ' $1: 需要扫描的目录,不配置时默认全盘扫描'
|
||||||
|
echo ' $2: 病毒文件的处理方式,不配置时默认为 2'
|
||||||
|
echo ' 0: 不处理;'
|
||||||
|
echo ' 1: 复制到指定目录;'
|
||||||
|
echo ' 2: 移动至指定目录;'
|
||||||
|
echo ' 3: 直接删除(不推荐)'
|
||||||
|
echo ' $3: 工作目录,用于输出日志、存放病毒文件,不配置时默认为 /opt/clamav 目录'
|
||||||
|
echo ' $4: 包管理器,支持 yum、zypper,不配置时默认根据操作系统自动选择'
|
||||||
|
echo '示例:'
|
||||||
|
echo ' 全盘扫描,使用默认配置: cvs'
|
||||||
|
echo ' 扫描 HOME 目录,使用默认配置: cvs /home'
|
||||||
|
echo ' 全盘扫描,不处理病毒文件: cvs / 0'
|
||||||
|
echo ' 扫描 HOME 目录,不处理病毒文件: cvs /home 0'
|
||||||
|
echo ' 全盘扫描,将日志文件保存至 /tmp/clamav 目录,同时将扫描出的病毒文件也移动至此目录: cvs / 2 /tmp/clamav'
|
||||||
|
echo ' 扫描 HOME 目录,将日志文件保存至 /tmp/clamav 目录,同时将扫描出的病毒文件也移动至此目录: cvs /home 2 /tmp/clamav'
|
||||||
|
}
|
||||||
|
## 版本号
|
||||||
|
version () {
|
||||||
|
echo 'cvs '$VERSION
|
||||||
|
}
|
||||||
|
### 创建文件夹
|
||||||
|
createPath () {
|
||||||
|
echo '------------------------------ 开始创建相关文件夹... ------------------------------'
|
||||||
|
mkdir -pv ${virusPath}
|
||||||
|
mkdir -pv ${logsPath}
|
||||||
|
echo '------------------------------ 相关文件夹创建完成! ------------------------------'
|
||||||
|
}
|
||||||
|
### 判断当前发行版并设置包管理器
|
||||||
|
getOSRelease () {
|
||||||
|
echo '------------------------------ 开始检查 Linux 发行版 ... ------------------------------'
|
||||||
|
[ -r /etc/os-release ] && . /etc/os-release
|
||||||
|
if [ `expr "${ID_LIKE}" : ".*suse.*"` != 0 ]; then
|
||||||
|
packageInstaller=zypper
|
||||||
|
if [ "${ID_LIKE:-}" = suse ] && [ "${VARIANT_ID:-}" = sle-micro ]; then
|
||||||
|
packageInstaller=zypper
|
||||||
|
fi
|
||||||
|
elif [ "${VERSION_ID%%.*}" = "7" ]; then
|
||||||
|
packageInstaller=yum
|
||||||
|
elif [ "${ID_LIKE:-}" = coreos ] || [ "${VARIANT_ID:-}" = coreos ]; then
|
||||||
|
packageInstaller=rpm-ostree
|
||||||
|
else
|
||||||
|
packageInstaller=yum
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${packageInstaller}" = "rpm-ostree" ] && [ -x /bin/yum ]; then
|
||||||
|
packageInstaller=yum
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${packageInstaller}" = "yum" ] && [ -x /usr/bin/dnf ]; then
|
||||||
|
packageInstaller=dnf
|
||||||
|
fi
|
||||||
|
echo '当前发行版为:' ${ID_LIKE}
|
||||||
|
echo '使用的包管理器为:' ${packageInstaller}
|
||||||
|
echo '------------------------------ Linux 发行版检查完成! ------------------------------'
|
||||||
|
}
|
||||||
|
### 安装 ClamAV
|
||||||
|
installClamAV () {
|
||||||
|
echo '------------------------------ 开始安装 ClamAV ... ------------------------------'
|
||||||
|
if [ "${packageInstaller}" = "yum" ]; then
|
||||||
|
yum install -y epel-release clamav clamav-update
|
||||||
|
elif [ "${packageInstaller}" = "zypper" ]; then
|
||||||
|
zypper install -y clamav
|
||||||
|
fi
|
||||||
|
echo '------------------------------ ClamAV 安装完成! ------------------------------'
|
||||||
|
}
|
||||||
|
### 更新 ClamAV
|
||||||
|
updateClamAV () {
|
||||||
|
echo '------------------------------ 开始更新 ClamAV ... ------------------------------'
|
||||||
|
if [ "${packageInstaller}" = "yum" ]; then
|
||||||
|
yum update -y epel-release clamav clamav-update
|
||||||
|
elif [ "${packageInstaller}" = "zypper" ]; then
|
||||||
|
zypper update -y clamav
|
||||||
|
fi
|
||||||
|
echo '------------------------------ ClamAV 更新完成! ------------------------------'
|
||||||
|
}
|
||||||
|
### 更新病毒库
|
||||||
|
updateVirusDatabase () {
|
||||||
|
echo '------------------------------ 开始更新病毒库... ------------------------------'
|
||||||
|
freshclam
|
||||||
|
echo '------------------------------ 病毒库更新完成! ------------------------------'
|
||||||
|
}
|
||||||
|
### 扫描病毒
|
||||||
|
scanVirus () {
|
||||||
|
echo '------------------------------ 开始扫描指定目录... ------------------------------'
|
||||||
|
case ${model} in
|
||||||
|
0)
|
||||||
|
clamscan --recursive=yes --infected --log=${logsPath}/clamscan.log ${scanDir}
|
||||||
|
;;
|
||||||
|
1)
|
||||||
|
clamscan --recursive=yes --infected --log=${logsPath}/clamscan.log --copy=${virusPath} ${scanDir}
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
clamscan --recursive=yes --infected --log=${logsPath}/clamscan.log --move=${virusPath} ${scanDir}
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
clamscan --recursive=yes --infected --log=${logsPath}/clamscan.log --remove=yes ${scanDir}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
clamscan --recursive=yes --infected --log=${logsPath}/clamscan.log ${scanDir}
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
infectedFileNumber = $(cat ${logsPath}/clamscan.log | grep "Infected files")
|
||||||
|
echo '------------------------------ 指定目录扫描完成! ------------------------------'
|
||||||
|
echo '****************************** 疑似病毒文件数量:' ${infectedFileNumber} ' ******************************'
|
||||||
|
echo '****************************** 扫描日志见:'${logsPath}'/clamscan.log ******************************'
|
||||||
|
echo '****************************** 病毒文件见:'${virusPath}',请及时处理 ******************************'
|
||||||
|
}
|
||||||
|
### 扫描
|
||||||
|
scan () {
|
||||||
|
echo '===================================================================================================='
|
||||||
|
echo `date +%Y-%m-%d` `date +%H:%M:%S`
|
||||||
|
echo '============================== 开始扫描 '${scanDir}' 目录...... =============================='
|
||||||
|
createPath
|
||||||
|
getOSRelease
|
||||||
|
installClamAV
|
||||||
|
updateClamAV
|
||||||
|
updateVirusDatabase
|
||||||
|
scanVirus
|
||||||
|
echo '============================== '${scanDir}' 目录扫描完成!!! =============================='
|
||||||
|
echo `date +%Y-%m-%d` `date +%H:%M:%S`
|
||||||
|
echo '===================================================================================================='
|
||||||
|
}
|
||||||
|
|
||||||
|
## 执行方法
|
||||||
|
case $1 in
|
||||||
|
help)
|
||||||
|
help
|
||||||
|
;;
|
||||||
|
version)
|
||||||
|
version
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
scan
|
||||||
|
;;
|
||||||
|
esac
|
57
dii
Executable file
57
dii
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 查询 docker 镜像信息
|
||||||
|
|
||||||
|
# 相关参数
|
||||||
|
## 版本号
|
||||||
|
VERSION=0.2.0
|
||||||
|
## Docker 镜像仓库
|
||||||
|
REPO=docker.io
|
||||||
|
## Docker 镜像
|
||||||
|
IMAGE=$1
|
||||||
|
## 仅查询Tags
|
||||||
|
ONLY_TAGES=$2
|
||||||
|
|
||||||
|
# 相关方法
|
||||||
|
## 帮助信息
|
||||||
|
help () {
|
||||||
|
echo 'Usage: dii Docker镜像名称 是否仅查询Tags'
|
||||||
|
echo '提示:需要先安装 skopeo 和 jq 包,安装方式请参考官方文档'
|
||||||
|
echo '示例:'
|
||||||
|
echo ' 从 Docker Hub 中查找 MySQL 镜像的信息:dii mysql'
|
||||||
|
echo ' 从 Docker Hub 中查找 MySQL 镜像的信息,仅输出 Tags:dii mysql t'
|
||||||
|
}
|
||||||
|
## 版本号
|
||||||
|
version () {
|
||||||
|
echo 'dii '$VERSION
|
||||||
|
}
|
||||||
|
## 查询所有信息
|
||||||
|
searchAllInfo () {
|
||||||
|
skopeo inspect docker://${REPO}/${IMAGE}
|
||||||
|
}
|
||||||
|
## 仅查询Tags
|
||||||
|
searchTagsOnly () {
|
||||||
|
skopeo inspect docker://${REPO}/${IMAGE} | jq ".RepoTags"
|
||||||
|
}
|
||||||
|
## 查询镜像信息
|
||||||
|
searchImage () {
|
||||||
|
echo '------------------------------ 正在从 '$REPO' 搜索镜像 '$IMAGE' 相关信息,请稍后... ------------------------------'
|
||||||
|
if [ $ONLY_TAGES ]; then
|
||||||
|
searchTagsOnly
|
||||||
|
else
|
||||||
|
searchAllInfo
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 执行方法
|
||||||
|
case $1 in
|
||||||
|
help)
|
||||||
|
help
|
||||||
|
;;
|
||||||
|
version)
|
||||||
|
version
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
searchImage
|
||||||
|
;;
|
||||||
|
esac
|
38
ghd
Executable file
38
ghd
Executable file
@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 加速下载 GitHub 文件
|
||||||
|
|
||||||
|
# 相关参数
|
||||||
|
## 版本号
|
||||||
|
VERSION=0.2.0
|
||||||
|
|
||||||
|
# 相关方法
|
||||||
|
## 帮助
|
||||||
|
help () {
|
||||||
|
echo 'Usage: ghd GitHub文件URL(支持 github.com 和 raw.githubusercontent.com )'
|
||||||
|
echo '示例:'
|
||||||
|
echo ' ghd https://github.com/docker/compose/releases/download/v2.19.1/docker-compose-linux-x86_64'
|
||||||
|
}
|
||||||
|
## 版本号
|
||||||
|
version () {
|
||||||
|
echo 'dii '$VERSION
|
||||||
|
}
|
||||||
|
## 下载文件
|
||||||
|
download () {
|
||||||
|
echo '------------------------------ 正在通过 GitHub Proxy (https://ghproxy.com) 下载 GitHub 文件,请稍后... ------------------------------'
|
||||||
|
curl -O https://mirror.ghproxy.com/$1
|
||||||
|
}
|
||||||
|
|
||||||
|
# 执行方法
|
||||||
|
case $1 in
|
||||||
|
help)
|
||||||
|
help
|
||||||
|
;;
|
||||||
|
version)
|
||||||
|
version
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
curl -O https://mirror.ghproxy.com/$1
|
||||||
|
# download()
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Reference in New Issue
Block a user