章工运维 章工运维
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)

章工运维

业精于勤,荒于嬉
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)
  • python

  • shell

    • 进程pid判断脚本
    • 日志切割脚本
    • 设置跳板机脚本
    • 编写启动、停止、重启的脚本
    • mysql数据库备份的三种方式
    • jenkins编译服务脚本
    • app编译脚本
    • 常用shell脚本
    • 字符串的截取拼接
    • shell基础
    • centos7主机安全检测脚本和初始化脚本
    • 应用服务重启脚本
    • shell重启python程序脚本
    • rancher的证书制作脚本
    • shell常用脚本集合
    • mysql常用的脚本集合
    • shell批量部署安装包并启动
    • 批量添加定时任务
    • mysql备份企业示例
    • shell脚本创建出色用户体验的6种技巧
    • 多系统一键部署zabbix6脚本(已验证)
    • 批量拿取多台服务器的日志文件
    • shell脚本模块集合
  • go

  • 编程
  • shell
章工运维
2025-05-13

shell脚本模块集合

# 日志模块

#!/usr/bin/env bash
current_time=$(date +%Y-%m-%d)
logfile="1_${current_time}.log"

if [ ! -f "$logfile" ];then
        touch $logfile
fi
log_message(){
  local message="$1"
  echo "$(date '+%Y-%m-%d %H:%M:%S') $message" | tee -a "$logfile" 
}

log_message "正在测试001"
log_message "003"
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 进度条模块

#!/usr/bin/env bash
current_time=$(date +%Y-%m-%d)
logfile="1_${current_time}.log"

if [ ! -f "$logfile" ];then
        touch $logfile
fi
log_message(){
  local message="$1"
  echo "$(date '+%Y-%m-%d %H:%M:%S') $message" | tee -a "$logfile" 
}

log_message "正在测试001"
log_message "003"
[root@localhost ~]# cat progress_bar.sh 
#!/bin/bash
 
progress_bar(){
    # 当前进度偏移量
    local process=$1
    # 总进度
    local total=$2
    # 进度条长度
    local width=50

    # 当前进度百分比
    local percent=$((process * 100 / total))
    # 填充多少个 '#'
    local filled=$((process * width / total))

    # 进度条字符串
    local bar=$(printf "%${filled}s" | tr ' ' '#')
    # 进度条后面的空格
    local empty=$(printf "%$((width - filled))s")

    # 打印进度条
    printf "\r[%-${width}s] %3d%%" "$bar$empty" "$percent"
}

total=100
for ((i = 1; i <= total; i++)); do
    sleep 0.05
    progress_bar "$i" "$total"
done

echo -e "\n completed!"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

使用示例

#!/bin/bash

backup_database() {
    local database=$1
    local total_steps=3
    local current_step=0
    
    ((current_step++))
    progress_bar "$current_step" "$total_steps"
    mysqldump -u root -p "$database" > "${database}_backup.sql"
    
    ((current_step++))
    progress_bar "$current_step" "$total_steps"
    gzip "${database}_backup.sql"
    
    ((current_step++))
    progress_bar "$current_step" "$total_steps"
    mv "${database}_backup.sql.gz" /backup/directory/
}

backup_database "mydatabase"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 配置文件管理模块

#!/bin/bash

# 配置文件备份
backup_config() {
    local config_file=$1
    local backup_dir="${2:-/etc/config_backups}"
    local timestamp=$(date +"%Y%m%d_%H%M%S")
    
    # 确保备份目录存在
    mkdir -p "$backup_dir"
    
    # 创建备份
    cp "$config_file" "${backup_dir}/$(basename "$config_file")_${timestamp}"
}

# 配置文件修改
update_config() {
    local config_file=$1
    local key=$2
    local value=$3
    
    # 备份原文件
    backup_config "$config_file"
    
    # 使用sed修改配置
    sed -i "s|^$key.*|$key=$value|g" "$config_file"
}

# 使用示例
backup_config "/etc/nginx/nginx.conf"
update_config "/etc/environment" "HTTP_PROXY" "http://proxy.example.com:8080"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

# 网络检测模块

#!/bin/bash

# 网络连接检测
check_network() {
    local host=${1:-8.8.8.8}
    local timeout=${2:-5}
    
    # 尝试ping
    if ping -c 1 -W "$timeout" "$host" &> /dev/null; then
        echo "网络连接正常"
        return 0
    else
        echo "网络连接异常"
        return 1
    fi
}

# 端口检测
check_port() {
    local host=$1
    local port=$2
    
    if nc -z -w5 "$host" "$port"; then
        echo "端口 $port 开放"
        return 0
    else
        echo "端口 $port 关闭"
        return 1
    fi
}

# 使用示例
check_network
check_port "example.com" 80

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

# 彩色输出函数模块

#!/bin/bash

# 文本颜色定义
COLOR_RED='\033[0;31m'
COLOR_GREEN='\033[0;32m'
COLOR_YELLOW='\033[0;33m'
COLOR_BLUE='\033[0;34m'
COLOR_PURPLE='\033[0;35m'
COLOR_CYAN='\033[0;36m'
COLOR_WHITE='\033[0;37m'

# 亮色系列
LIGHT_RED='\033[1;31m'
LIGHT_GREEN='\033[1;32m'
LIGHT_YELLOW='\033[1;33m'
LIGHT_BLUE='\033[1;34m'
LIGHT_PURPLE='\033[1;35m'
LIGHT_CYAN='\033[1;36m'
LIGHT_WHITE='\033[1;37m'

# 背景颜色
BG_RED='\033[41m'
BG_GREEN='\033[42m'
BG_YELLOW='\033[43m'
BG_BLUE='\033[44m'
BG_PURPLE='\033[45m'
BG_CYAN='\033[46m'

# 重置颜色
COLOR_RESET='\033[0m'

#!/bin/bash

# 系统资源彩色输出
monitor_system_resources() {
    # CPU使用率
    local cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
    local cpu_color=""

    if (( $(echo "$cpu_usage > 80" | bc -l) )); then
        cpu_color="$COLOR_RED"
    elif (( $(echo "$cpu_usage > 50" | bc -l) )); then
        cpu_color="$COLOR_YELLOW"
    else
        cpu_color="$COLOR_GREEN"
    fi

    # 内存使用率
    local memory_usage=$(free | awk '/Mem:/ {printf "%.2f", $3/$2 * 100}')
    local memory_color=""

    if (( $(echo "$memory_usage > 80" | bc -l) )); then
        memory_color="$COLOR_RED"
    elif (( $(echo "$memory_usage > 50" | bc -l) )); then
        memory_color="$COLOR_YELLOW"
    else
        memory_color="$COLOR_GREEN"
    fi

    # 输出带颜色的监控信息
    echo -e "CPU使用率: ${cpu_color}${cpu_usage}%${COLOR_RESET}"
    echo -e "内存使用率: ${memory_color}${memory_usage}%${COLOR_RESET}"
}

print_color() {
    local color=$1
    local message=$2

    echo -e "${color}${message}${COLOR_RESET}"
}

# 状态输出函数
print_status() {
    local status=$1
    local message=$2

    case "$status" in
        "success")
            print_color "$COLOR_GREEN" "[✓] $message"
            ;;
        "warning")
            print_color "$COLOR_YELLOW" "[!] $message"
            ;;
        "error")
            print_color "$COLOR_RED" "[✗] $message"
            ;;
        "info")
            print_color "$COLOR_BLUE" "[*] $message"
            ;;
        *)
            echo "$message"
            ;;
    esac
}

# 网络连接状态彩色输出
check_network_status() {
    local host=${1:-baidu.com}

    if ping -c 1 "$host" &> /dev/null; then
        print_status "success" "网络连接正常"
    else
        print_status "error" "网络连接失败"
    fi
}

# 使用示例
monitor_system_resources
check_network_status
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
微信 支付宝
上次更新: 2025/05/13, 15:00:35

← 批量拿取多台服务器的日志文件 指针→

最近更新
01
生活小技巧(认知版)
04-29
02
生活小技巧(防骗版)
04-29
03
不花一分钱从0到1建站教程
04-22
更多文章>
Theme by Vdoing | Copyright © 2019-2025 | 点击查看十年之约 | 鄂ICP备2024072800号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式