继开 | 博客

热爱生活,努力学习,实现自己的价值


  • 短诗的序

  • 迷途自渡

  • 寒星三两

  • 林深见鹿

  • 记昨日书

  • 顾探往昔

Docker Docker-compose快速搭建快速搭建TrWebOCR开源的离线OCR

发表于 2023-10-06
字数统计: 393 字 | 阅读时长 ≈ 2 min

TrWebOCR是什么

TrWebOCR基于开源项目 Tr 构建。支持快速高识别率中文识别。
提供了http调用的接口,便于在其他的项目中调用。
并且提供了易于使用的web页面,便于调试或日常使用。
开源地址是
https://github.com/alisen39/TrWebOCR

TrWebOCR 搭建

trwebocr-compose.yml 文件如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# docker run -itd --rm -p 8089:8089 --name trwebocr mmmz/trwebocr:latest
# 步骤一:新建文件夹 trwebocr 和 子目录
# mkdir -p /data/trwebocr/{data,logs}
# 步骤二:进入 trwebocr 目录
# cd /data/trwebocr
# 步骤三:将 trwebocr-compose.yml 放入当前目录
# 步骤四:启动
# docker-compose -f trwebocr-compose.yml up -d
# trwebocr-compose.yml 配置文件如下
version: '3'
services:
trwebocr:
image: mmmz/trwebocr:latest
container_name: trwebocr
restart: always
ports:
- 18089:8089

按照trwebocr-compose.yml内的步骤逐步执行

trwebocr 使用

界面使用

浏览器访问:http://ip:18089/

接口调用示例

Python 使用File上传文件

1
2
3
4
5
6
import requests
url = 'http://ip:18089/api/tr-run/'
img1_file = {
'file': open('img1.png', 'rb')
}
res = requests.post(url=url, data={'compress': 0}, files=img1_file)

Python 使用Base64

1
2
3
4
5
6
7
8
9
10
import requests
import base64
def img_to_base64(img_path):
with open(img_path, 'rb')as read:
b64 = base64.b64encode(read.read())
return b64

url = 'http://ip:18089/api/tr-run/'
img_b64 = img_to_base64('./img1.png')
res = requests.post(url=url, data={'img': img_b64})

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Docker Docker-Compose快速搭建it-Tools程序员面板工具

发表于 2023-10-05
字数统计: 334 字 | 阅读时长 ≈ 1 min

it-tools是什么

it-tools是一个开源轻量级的在线工具箱,支持JSON格式化,SQL格式化,XML格式化,JSON转Execl等等。特别是Docker run转Docker compose等工具,极大提高工作效率
git地址是
https://github.com/CorentinTh/it-tools

it-tools 搭建

it-tools-compose.yml 文件如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# docker run -d --name it-tools --restart unless-stopped -p 3330:80 corentinth/it-tools:latest
# 1.新建文件夹 ittools 和 子目录
# mkdir -p /data/ittools/{data,logs}
# 2.进入 ittools 目录
# cd /data/ittools
# 3.将 it-tools-compose.yml 放入当前目录
# 4.启动
# docker-compose -f it-tools-compose.yml up -d

version: '3'

services:
ittools:
image: corentinth/it-tools:latest
container_name: ittools
restart: unless-stopped
ports:
- 3330:80

按照it-tools-compose.yml 内的步骤逐步执行
也可直接使用docker run 启动

it-tools 使用

浏览器访问:http://ip:3330/

可直接使用,界面为英文,建议使用360浏览器打开,使用翻译功能可以将页面转化为中文(谷歌浏览器,翻译插件也可以)

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Docker-Compose部署画图-开源软件draw.io

发表于 2023-09-30
字数统计: 582 字 | 阅读时长 ≈ 2 min

draw.io是什么

draw.io 是一款在线绘图工具,可以用于创建流程图、组织结构图、网络图、UML图等各种类型的图表。它提供了丰富的图形元素和编辑功能,使用户能够轻松地创建和编辑图表。
draw.io 支持多种文件格式,包括XML、PNG、JPEG等,方便保存和分享图表。

开源地址:
git仓库
https://github.com/jgraph/drawio
官方网站
https://www.diagrams.net/
dicker git地址
https://github.com/fjudith/docker-draw.io
配置文件地址
https://github.com/fjudith/docker-draw.io/blob/master/docker-compose.yml

draw.io 搭建

drawio-compose.yml 文件如下

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
#docker-compose -f drawio-compose.yml up -d
#在浏览器输入机器IP:9002 就可以进入drawio页面
#drawio-compose.yml 配置文件如下
version: '3'
services:
drawio:
image: fjudith/draw.io
container_name: drawio
restart: unless-stopped
ports:
- 9002:8080
- 8443:8443
environment:
PUBLIC_DNS: domain
ORGANISATION_UNIT: unit
ORGANISATION: org
CITY: city
STATE: state
COUNTRY_CODE: country
DRAWIO_GITLAB_URL: http://mygitlab.net
DRAWIO_GITLAB_ID: change_to_your_app_id
healthcheck:
test: ["CMD-SHELL", "curl -f http://domain:8080 || exit 1"]
interval: 1m30s
timeout: 10s
retries: 5

按照drawio-compose.yml 内的步骤逐步执行

draw.io 使用

浏览器访问:http://ip:9002/

进入之后是首页,界面基本都是图形化炒作,

drawio提供了丰富的图形元素库,包括各种形状、符号、箭头等,用户可以根据需要自由选择和组合这些元素,轻松创建各种类型的图表、流程图、平面图等。
drawio内置了大量的模板,涵盖了各个领域的常见图表和图形,如组织结构图、UML图、网络拓扑图等。用户可以直接使用这些模板,快速创建符合自己需求的图形。
drawio支持导入和导出多种文件格式,包括XML、PNG、JPEG、PDF等。用户可以方便地将自己的图形导出为常见的图片或文档格式,也可以从其他绘图工具中导入已有的图形进行编辑和修改。

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Docker-Compose搭建moon-Web-Start导航页

发表于 2023-09-29
字数统计: 315 字 | 阅读时长 ≈ 1 min

moon-web-start是什么

moon-web-start 是简约的导航页,支持在线编辑网页,支持农历显示时间日期,支持分类添加,支持导出导入数据,支持五种搜索引擎。
开源地址:
https://github.com/jic999/moon-web-start
https://github.com/Rod0320/web-start-vue
https://hub.docker.com/r/luode0320/web-start

moon-web-start 搭建

moon-web-start-compose.yml 文件如下

1
2
3
4
5
6
7
8
9
10
11
12
#docker run --restart=always --name web -d -p 2000:2000 luode0320/web-start:1.0
#在浏览器输入机器IP:2000 就可以进入emqtt页面
#docker-compose -f moon-web-start-compose.yml up -d
#moon-web-start--compose.yml 配置文件如下
version: "3"
services:
webstart:
image: luode0320/web-start:1.0
container_name: webstart
ports:
- 2000:2000
restart: always

按照moon-web-start-compose.yml 内的步骤逐步执行

Musicn 使用

浏览器访问:http://ip:2000/

界面基本都是图形化炒作,进入之后是首页
之后进入可以进行操作,修改分类,分组,还有创建网站

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

win10系统下搭建fooocus,开源和免费AI绘画工具

发表于 2023-09-10
字数统计: 859 字 | 阅读时长 ≈ 4 min

fooocus 是什么

Fooocus一款基于人工智能技术的绘画神器,旨在为用户提供卓越的绘画体验。与传统的绘画工具相比,Fooocus具备更强大的自动化和智能化功能,使用户能够轻松创作出需要的艺术图片。

Fooocus的作者Ilias Avil,Fooocus是对 Stable Diffusion 和 Midjourney 的融合,完全开源免费使用

Fooocus项目原地址:https://github.com/lllyasviel/Fooocus

fooocus 搭建

环境

本次搭建使用的环境如下:

win10 操作系统
32G 运行内存
NVIDIA GeForce GTX 1050 Ti 4G 显卡
20G 以上硬盘可用空间

需要科学上网,在下载项目和启动的时候需要

注意

最低要求:
8G 可用运行内存
4G 现存
20G 以上硬盘可用空间
需要科学上网

下载

在 https://github.com/lllyasviel/Fooocus/releases 界面直接选择版本下载

也可直接使用 https://github.com/lllyasviel/Fooocus/releases/download/release/Fooocus_win64_2-0-50.7z 进行下载

注意

1.需要科学上网

启动

将压缩包 Fooocus_win64_2-0-50.7z 解压到D盘根目录,在文件夹中找到 run.bat, 以管理员身份运行

系统自动打开命令行进行执行

1
2
3
4
5
6
7
8
9
10
11
12
13
D:\Fooocus_win64_2-0-50>.\python_embeded\python.exe -s Fooocus\entry_with_update.py
Fast-forward merge
Update succeeded.
Python 3.10.9 (tags/v3.10.9:1dd9be6, Dec 6 2022, 20:01:21) [MSC v.1934 64 bit (AMD64)]
Fooocus version: 2.0.75
Inference Engine exists.
Inference Engine checkout finished.
Downloading: "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0_0.9vae.safetensors" to D:\Fooocus_win64_2-0-50\Fooocus\models\checkpoints\sd_xl_base_1.0_0.9vae.safetensors

100%|█████████████████████████████████████████████████████████████████████████████| 6.46G/6.46G [27:07<00:00, 4.26MB/s]
Downloading: "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0_0.9vae.safetensors" to D:\Fooocus_win64_2-0-50\Fooocus\models\checkpoints\sd_xl_refiner_1.0_0.9vae.safetensors

69%|████████████████████████████████████████████████████▉ | 3.89G/5.66G [24:50<10:44, 2.94MB/s]

项目会先下载两个模型文件,然后启动web服务,此处需要的时间较长,耐心等待,下载完成之后,自动在浏览器打开 http://127.0.0.1:7860/
然后就可以在 浏览器中使用了

注意

1.下载和启动都需要科学上网
2.如果启动之后没有打开浏览器,手动复制http://127.0.0.1:7860/到谷歌浏览器打开,建议使用谷歌浏览器
3.如果下载较慢,可以直接下载两个模型,sd_xl_base_1.0_0.9vae.safetensors和sd_xl_refiner_1.0_0.9vae.safetensors放到D:\Fooocus_win64_2-0-50\Fooocus\models\checkpoints\目录下,下载地址为

1
https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0_0.9vae.safetensors

和

1
https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0_0.9vae.safetensors

4.如果还是启动不了,检查计算配置是否满足最低运行要求

fooocus 使用

启动完成之后,直接在浏览器中输入 http://127.0.0.1:7860/

在界面中输入图片的标签(语言为英语),可用直接自动生成图片
生成图片的时间根据电脑的实际性能,例如,本次搭建使用的环境,生成两张图片大约需要6-10分钟
点击Advanced,可以进行高级设置,主要也就是分辨率,风格和模型的一些选择上。

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Docker-compose搭建Musicn音乐下载工具

发表于 2023-09-09
字数统计: 424 字 | 阅读时长 ≈ 2 min

Musicn 是什么

Musicn 是一个可播放及下载高品质音乐的命令行工具。支持咪咕,酷狗,网易云音乐下载的服务。

Musicn 搭建

musicn-compose.yml 文件如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#mkdir -p /data/musicn/{data,logs}
#docker-compose -f musicn-compose.yml up -d
#musicn-compose.yml 配置文件如下

version: '3'

services:
musicn:
image: ghcr.io/wy580477/musicn-container:latest
container_name: musicn
restart: unless-stopped
entrypoint: ["/sbin/tini", "--", "msc", "-q"]
ports:
- "7478:7478"
volumes:
- /data/musicn/data:/data

按照musicn-compose.yml 内的步骤逐步执行

Musicn 使用

浏览器访问:http://ip:7478/

只有一个搜索框,有下拉选项选择咪咕,酷狗,网易云音乐下载,搜索之后可以选择下面的播放键试听。

其他问题解决

兼容性

部分浏览器兼容性不好,可能打不开,也可能新建不了分类,可尝试更换浏览器操作

启动报错

1
2
3
4
[root@localhost musicn]# docker-compose -f musicn-compose.yml up -d
Creating network "musicn_default" with the default driver
Pulling musicn (ghcr.io/wy580477/musicn-container:latest)...
ERROR: Get "https://ghcr.io/v2/": dial tcp: lookup ghcr.io on [::1]:53: read udp [::1]:36112->[::1]:53: read: connection refused

解决
尝试直接使用docker pull ghcr.io/wy580477/musicn-container:latest先下载镜像再启动

1
2
3
4
5
6
7
8
[root@localhost musicn]# docker pull ghcr.io/wy580477/musicn-container:latest
latest: Pulling from wy580477/musicn-container
7264a8db6415: Pull complete
33fbadb7f8c6: Downloading [===============> ] 14.74MB/48.5MB
5558ef53d261: Download complete
3ae8a7119b2e: Download complete
117df262261e: Download complete
e2d04075ea88: Download complete

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Python Python批量合并Excel数据的实现及代码示例

发表于 2023-09-02
字数统计: 555 字 | 阅读时长 ≈ 3 min

环境

window10
python = 3.7

代码

推荐使用方法1,
方法2 占用时间过长,小批量数据可以使用

方法1

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
# 同一文件夹下多个Excel合并
import pandas as pd
import os
import time

# 文件路径
file_dir = 'F:/vsCodeWorkspace/python20230907excel/excel'
# 构建新的表格名称
new_filename = 'excel_1.xlsx'
# 找到文件路径下的所有表格名称,返回列表
file_list = os.listdir(file_dir)
new_list = []

for file in file_list:
# 重构文件路径
#print(file)
file_path = os.path.join(file_dir, file)
print(file_path)
# 将excel转换成DataFrame
dataframe = pd.read_excel(file_path)
# 保存到新列表中
new_list.append(dataframe)

# 多个DataFrame合并为一个
df = pd.concat(new_list)
# 写入到一个新excel表中
df.to_excel(new_filename, index=False)

方法2

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

import pandas as pd

import glob
# 获取文件夹下所有Excel文件的路径
folder_path = 'F:/vsCodeWorkspace/python20230907excel/excel'

# 替换为你的文件夹路径
# file_paths = glob.glob(folder_path + '/*.xlsx')
file_paths = glob.glob(folder_path + '/*.xls')


# 修改文件扩展名(例如:.xlsx、.xls)
# 创建一个空的DataFrame来存储合并后的数据
merged_data = pd.DataFrame()
# 逐个读取并合并Excel文件
for file_path in file_paths:
df = pd.read_excel(file_path)
merged_data = merged_data.append(df, ignore_index=True)

# 将合并后的数据保存到新的Excel文件
merged_data.to_excel('excel2.xlsx', index=False)

问题及解决办法

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
# 下载基础环境
pip install pandas -i https://mirrors.aliyun.com/pypi/simple/


# 问题
发生异常: ImportError
Missing optional dependency 'xlrd'. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd.

During handling of the above exception, another exception occurred:

File "F:\vsCodeWorkspace\python20230907excel\test.py", line 18, in <module>
df = pd.read_excel(file_path)



# 解决办法
pip install xlrd -i https://mirrors.aliyun.com/pypi/simple/



# 问题

No module named 'openpyxl'
File "F:\vsCodeWorkspace\python20230907excel\test.py", line 22, in <module>
merged_data.to_excel('merged_data.xlsx', index=False)

# 解决办法
pip install openpyxl -i https://mirrors.aliyun.com/pypi/simple/

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Python Python命令执行脚本批量巡检多台linux服务器

发表于 2023-08-27
字数统计: 4,147 字 | 阅读时长 ≈ 21 min

环境

window10
python = 3.7
被巡检服务器linux

代码

python部分

需要安装paramiko模块

1
pip install paramiko

python 部分代码如下

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
#-*- coding:utf8 -*-
import paramiko
import subprocess
import datetime

# 定义服务器列表和巡检脚本路径
servers = [
{'hostname': 'server1', 'ip': '192.168.231.128', 'username': 'root', 'password': 'root'},
{'hostname': 'server1', 'ip': '192.168.231.129', 'username': 'root', 'password': 'root'},
# 添加更多服务器
]
script_path = 'F:\\vsCodeWorkspace\\Monitoring.sh' # 替换为您的巡检脚本路径

# 遍历服务器列表进行巡检
for server in servers:
try:
# 建立SSH连接
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(server['ip'], username=server['username'], password=server['password'])

# 上传巡检脚本至远程服务器
sftp = ssh.open_sftp()
sftp.put(script_path, 'script.sh')
sftp.close()

# 执行巡检脚本
stdin, stdout, stderr = ssh.exec_command('chmod +x script.sh && ./script.sh')
output = stdout.read().decode()

# 打印巡检结果
print(f"Server: {server['hostname']}")
print(f"Output: {output}")
print("----------------------------------------")
#写入日志out.log
current_time = datetime.datetime.now()
logout = current_time.strftime("%Y-%m-%d.txt")
with open(logout,"a",encoding="utf-8") as file:
file.write(f"Server: {server['hostname']}\r\n")
file.write(f"Output: {output}")
# 关闭SSH连接
ssh.close()
#屏幕打印,如果不需要则注释并注释上面try
except paramiko.AuthenticationException as e:
print(f"Failed to connect to {server['hostname']}: {str(e)}")
except paramiko.SSHException as e:
print(f"Error occurred while connecting to {server['hostname']}: {str(e)}")

shell部分

文件名为:Monitoring.sh

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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228

#!/bin/bash

function RED(){
#在页面上打印成红色
# echo -e "\033[31m$@\033[0m"
#在日志输出不乱码
echo -e "$@"
}

function GRE(){
#在页面上打印成绿色
# echo -e "\033[36m$@\033[0m"
#在日志输出
echo -e "$@"
}

function OS_INFO(){
# 系统名
local OS_NAME=`uname -n`
# 系统版本
local OS_VERSION=`cat /etc/.kyinfo | grep dist_id | grep -oE "Kylin.*" 2>/dev/null || echo 获取信息失败`
# 系统类型
local OS_TYPE=`uname`
# 主机序列号
local OS_NUM=`dmidecode -t system | grep 'Serial Number' | awk '{print $3}'`
# 系统内核版本
local OS_KERNEL=`uname -r`
# 系统机器码
local OS_CODE=""
# 系统语言环境
local OS_LANG=`echo $LANG`
# 系统时间
local OS_DATE=`date +"%Y-%m-%d %H:%M:%S"`
# 系统运行时间
local OS_UPTIME=`uptime | awk -F',' '{sub(/.*up /,"",$1);print $1'} || echo 获取信息失败`
# 系统上次重启时间
local OS_LAST_REBOOT=`last reboot | head -1 | awk '{print $5,$6,$7,$8,$10}'`
# 系统上次关机时间
local OS_LAST_SHUTDOWN=`last -x | grep shutdown | head -1 | awk '{print $5,$6,$7,$8,$10}'`

RED "################################# [ 系统信息巡检区 ] ######################################"
GRE "主机名:$OS_NAME"
GRE "主机类型:$OS_TYPE"
GRE "主机序列号:${OS_NUM:-获取信息失败}"
GRE "系统版本:$OS_VERSION"
GRE "系统内核版本:$OS_KERNEL"
GRE "系统机器码:${OS_CODE:-获取信息失败}"
GRE "系统语言环境:${OS_LANG}"
GRE "系统时间;$OS_DATE"
GRE "系统已运行时间:$OS_UPTIME"
GRE "系统上次重启时间:${OS_LAST_REBOOT:-获取信息失败}"
GRE "系统上次关机时间:${OS_LAST_SHUTDOWN:-获取信息失败}"
}

function OS_HDWARE(){
# CPU架构
local CPU_ARCH=`uname -m`
# CPU型号
local CPU_TYPE=`cat /proc/cpuinfo | grep "model name" | uniq | awk -F':' '{sub(/ /,"",$2);print $2}'`
# CPU个数
local CPU_NUM=`cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l`
# CPU 核数
local CPU_CORE=`cat /proc/cpuinfo | grep cores | uniq | awk -F':' '{sub(/ /,"",$2);print $2}'`
# CPU 频率
local CPU_HZ=`cat /proc/cpuinfo | grep "cpu MHz" | uniq | awk -F':' '{sub(/ /,"",$2);printf "%s MHz\n",$2}'`

# 内存容量
local ME_SIZE=$(echo "scale=2;`cat /proc/meminfo | grep 'MemTotal:' | awk '{print $2}'`/1048576"|bc)
# 空闲内存
local ME_FREE=$(echo "scale=2;`cat /proc/meminfo | grep 'MemFree:' | awk '{print $2}'`/1048576"|bc)
# 可用内存
local ME_FREEE=$(echo "scale=2;`cat /proc/meminfo | grep 'MemAvailable:' | awk '{print $2}'`/1048576" | bc)
# 内存使用率
local ME_USE=$(awk 'BEGIN{printf "%.1f%\n",('$ME_SIZE'-'$ME_FREEE')/'$ME_SIZE'*100}')
# SWAP大小
local ME_SWAP_SIZE=$(echo "scale=2;`cat /proc/meminfo | grep 'SwapTotal:' | awk '{print $2}'`/1048576"|bc)
# SWAP可用
local ME_SWAP_FREE=$(echo "scale=2;`cat /proc/meminfo | grep 'SwapFree:' | awk '{print $2}'`/1048576"|bc)
# SWAP使用率
local ME_SWAP_USE=$(awk 'BEGIN{printf "%.1f%\n",('$ME_SWAP_SIZE'-'$ME_SWAP_FREE')/'$ME_SWAP_SIZE'*100}')
# Buffer大小
local ME_BUF=$(cat /proc/meminfo | grep 'Buffers:' | awk '{printf "%s KB",$2}')
# 内存Cache大小
local ME_CACHE=$(cat /proc/meminfo | grep '^Cached:' | awk '{printf "%s KB",$2}')

# 当前系统所有网卡
local NET_DEVICE=(`cat /proc/net/dev | awk 'NR>2 && $1 !~/lo/ {sub(/:/,"");print $1}'`)

RED "################################# [ 系统硬件巡检区 ] ######################################"
GRE "CPU型号:$CPU_TYPE"
GRE "CPU架构:$CPU_ARCH"
GRE "CPU个数:$CPU_NUM"
GRE "CPU核数: $CPU_CORE"
GRE "CPU频率:$CPU_HZ"
GRE "内存容量:${ME_SIZE} GB"
GRE "内存空闲:${ME_FREE} GB"
GRE "内存可用:${ME_FREEE} GB"
GRE "内存使用率:${ME_USE}"
GRE "SWAP容量:$ME_SWAP_SIZE GB"
GRE "SWAP可用容量:$ME_SWAP_FREE GB"
GRE "SWAP使用率:$ME_SWAP_USE"
GRE "内存Buffer大小:${ME_BUF}"
GRE "内存Cache大小:${ME_CACHE}"

for i in ${NET_DEVICE[@]}
do
GRE "网卡:$i 状态: $(ip link show ens33 | awk 'NR==1{print $9}') RX: $(ethtool -g ens33 | grep "RX:" | tail -1 | awk '{print $2}') TX: $(ethtool -g ens33 | grep "TX:" | tail -1 | awk '{print $2}')"
done
}

function OS_NETWORK(){
# 系统IP
local IP=$(hostname -I)
# 网关地址
local GATEWAY=$(ip route | grep default &>/dev/null && ip route | grep default | awk '{print $3}' || echo '未设置默认网关')
# DNS地址
local DNS=(`cat /etc/resolv.conf | grep nameserver | uniq | awk '{print $2}'`)

RED "################################# [ 系统网络巡检区 ] ######################################"
GRE "IP地址:$IP"
GRE "网关地址:$GATEWAY"
GRE "DNS地址:${DNS[@]}"
GRE "网关[$GATEWAY]连接情况: $(ping -t 1 -i 1 -c 5 -W 1 192.168.0.2 &>/dev/null && echo '正常通信' || echo '无法通信')"
}

function OS_RESOURCE(){
# 系统磁盘列表
local DISK_LIST=(`lsblk | egrep "^[a-z].*" | grep -v "^sr" | awk '{print $1}'`)
# 系统磁盘使用率情况
local DISK_PER=(`df -h | awk 'NR>1 && $1 !~/sr/ {gsub(/%/,"",$5);print $5}'`)

# CPU空闲率
local CPU_FREE=$(top -d 1 -n 1 -b | awk 'NR==3{print $8}')
# CPU使用率
local CPU_USE=$(awk 'BEGIN{printf "%.1f%\n",100-'$CPU_FREE'}')
# CPU_TOP_TEN
local CPU_TOP_TEN=$(top -d 1 -n 1 -b | column -t | awk 'NR>=7 && NR<=15')

# 当前进程数
local CPU_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print $2}')
# 当前正在运行进程数
local CPU_RUN_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print $4}')
# 当前正在休眠进程数
local CPU_SL_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print $6}')
# 当前停止运行进程数
local CPU_STOP_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print 8}')
# 当前僵尸进程数
local CPU_ZOM_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print $10}')


RED "################################# [ 系统资源巡检区 ] ######################################"
GRE "CPU使用率:$CPU_USE"
GRE "CPU使用率前十进程信息:"
GRE "$(ps -eo user,pid,pcpu,pmem,args --sort=-pcpu | head -n 10)"
GRE "\n内存使用率前十进程信息:"
GRE "$(ps -eo user,pid,pcpu,pmem,args --sort=-pmem | head -n 10)"
GRE "\n磁盘IO信息:$(iotop -bon 1 &>/dev/null || echo 'io top 未安装信息获取失败')"
GRE "$(iotop -bon 1 &>/dev/null && iotop -bon 1 | head -n 13)"
GRE "\n磁盘分区使用率是否正常:正常"
for i in ${DISK_LIST[@]}
do
if [[ -z "$(lsblk --nodeps -no serial /dev/$i)" ]]; then
GRE "磁盘:$i 磁盘序列号:获取信息失败"
else
GRE "磁盘:$i 磁盘序列号:$(lsblk --nodeps -no serial /dev/$i)"
fi
done
for i in ${DISK_PER[@]}
do
if [ $i -gt 80 ]; then
RED "某分区磁盘使用率为:$i% > 80% 请及时扩容"
fi
done
GRE "\n系统磁盘分区inode使用情况:"
GRE "$(df -Thi)"
GRE "\n系统当前进程数:$CPU_PROCESSORS"
GRE "系统当前进程运行数:$CPU_RUN_PROCESSORS"
GRE "系统当前休眠进程数:$CPU_SL_PROCESSORS"
GRE "系统当前停止进程数:$CPU_STOP_PROCESSORS"
GRE "系统当前僵尸进程数:$CPU_ZOM_PROCESSORS"

GRE "\n系统当前允许最大fd数量:$(cat /proc/sys/fs/file-nr | awk '{print $3}')"
GRE "系统当前已打开fd数量:$(cat /proc/sys/fs/file-nr | awk '{print $1}')"
GRE "系统单个进程运行打开fd数量:$(ulimit -n)"

GRE "\n系统当前socket连接数:$(netstat -anp &>/dev/null && netstat -anp | wc -l || echo 'net-tools 未安装,获取信息失败')"
GRE "系统 established socket数量: $(netstat -anp &>/dev/null && netstat -anp | grep "ESTABLISHED" | wc -l || echo 'net-tools 未安装,获取信息失败')"
GRE "系统 sync socket数量:$(netstat -anp &>/dev/null && netstat -anp | grep "SYN" | wc -l || echo 'net-tools 未安装,获取信息失败')"
GRE "系统当前已建立socket如下:"
GRE "$(netstat -anp &>/dev/null && netstat -anp | grep ESTABLISHED | awk '{printf " 本地:%-20s <=> 外部:%-22s\n",$4,$5}' || echo '')"
}

function OS_SECURITY(){
# 系统所有能登录的用户
local OS_USER=(`cat /etc/passwd | awk -F':' '$NF !~/nologin|sync|shutdown|halt/ {print $1}'`)
# Selinux
local OS_SELINUX=`getenforce`
# 防火墙状态
local OS_FIREWALLD=`service firewalld status &>/dev/null | grep "running" && echo on || echo off`

RED "################################# [ 系统安全巡检区 ] ######################################"
GRE "防火墙状态: $OS_FIREWALLD"
GRE "Selinux状态:${OS_SELINUX}\n"
GRE "系统可登录用户数:$(cat /etc/passwd | awk -F':' '$NF !~/nologin|sync|shutdown|halt/ {print $1}' | wc -l)"
GRE "系统可登录用户:${OS_USER[@]}"
for i in ${OS_USER[@]}
do
GRE "用户 $i 最后1次登录信息: $(lastlog -u $i | awk 'NR==2')"
done
GRE "系统当前登录用户:"
GRE "$(who | sed 's#[()]##g' | awk '{printf " 用户: %10s 终端: %7s 登录时间: %7s %7s 登录IP: %7s\n",$1,$2,$3,$4,$5}')"
}

function OS_SERVICE(){
RED "################################# [ 系统服务巡检区 ] ######################################"
GRE "自行添加"
}

if [ $(id -u -n) != "root" ]; then
ERROR "请以ROOT用户运行这个脚本"
fi

OS_INFO
OS_HDWARE
OS_NETWORK
OS_RESOURCE
OS_SECURITY

结果

日志文件名是今天的日期

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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
Server: server1

Output: ################################# [ 系统信息巡检区 ] ######################################
主机名:bogon
主机类型:Linux
主机序列号:VMware-56
系统版本:获取信息失败
系统内核版本:3.10.0-1160.el7.x86_64
系统机器码:获取信息失败
系统语言环境:zh_CN.UTF-8
系统时间;2023-09-09 12:16:36
系统已运行时间:10 min
系统上次重启时间:Sat Sep 9 12:06 12:16
系统上次关机时间:Sat Sep 9 11:32 12:06
################################# [ 系统硬件巡检区 ] ######################################
CPU型号:Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
CPU架构:x86_64
CPU个数:2
CPU核数: 1
CPU频率:2208.002 MHz
内存容量:3.68 GB
内存空闲:1.29 GB
内存可用:2.14 GB
内存使用率:41.8%
SWAP容量:0 GB
SWAP可用容量:0 GB
SWAP使用率:
内存Buffer大小:2104 KB
内存Cache大小:1095648 KB
网卡:vethd0d16e2 状态: UP RX: 256 TX: 256
网卡:br-5cc909daa712 状态: UP RX: 256 TX: 256
网卡:br-8aeaa845ffa4 状态: UP RX: 256 TX: 256
网卡:veth30f95e0 状态: UP RX: 256 TX: 256
网卡:br-1e607a72367a 状态: UP RX: 256 TX: 256
网卡:veth03a160e 状态: UP RX: 256 TX: 256
网卡:vetha221a4d 状态: UP RX: 256 TX: 256
网卡:br-4f71f13677f9 状态: UP RX: 256 TX: 256
网卡:br-ee83d5997b33 状态: UP RX: 256 TX: 256
网卡:br-212b68474a5c 状态: UP RX: 256 TX: 256
网卡:br-ff93a3026998 状态: UP RX: 256 TX: 256
网卡:br-7c424b96b4d9 状态: UP RX: 256 TX: 256
网卡:vethe83937d 状态: UP RX: 256 TX: 256
网卡:veth9f69747 状态: UP RX: 256 TX: 256
网卡:br-182bab31fcd7 状态: UP RX: 256 TX: 256
网卡:br-860a421033a0 状态: UP RX: 256 TX: 256
网卡:ens33 状态: UP RX: 256 TX: 256
网卡:br-9df6b9fac4d3 状态: UP RX: 256 TX: 256
网卡:br-0cfcee11ccdc 状态: UP RX: 256 TX: 256
网卡:docker0 状态: UP RX: 256 TX: 256
################################# [ 系统网络巡检区 ] ######################################
IP地址:192.168.231.128 172.18.0.1 172.22.0.1 172.24.0.1 172.100.0.1 172.20.0.1 172.25.0.1 172.28.0.1 172.26.0.1 172.19.0.1 172.27.0.1 172.17.0.1 172.21.0.1 172.23.0.1
网关地址:192.168.231.2
DNS地址:192.168.231.2
网关[192.168.231.2]连接情况: 无法通信
################################# [ 系统资源巡检区 ] ######################################
CPU使用率:3.1%
CPU使用率前十进程信息:
USER PID %CPU %MEM COMMAND
root 2376 1.5 10.4 java -Dfile.encoding=UTF-8 -Dspring.config.location=/opt/kkFileView-4.1.0/config/application.properties -jar /opt/kkFileView-4.1.0/bin/kkFileView-4.1.0.jar
root 2724 0.9 2.5 node server/server.js
root 3289 0.2 0.0 /bin/bash ./script.sh
root 1 0.1 0.1 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 499 0.1 0.0 /usr/lib/systemd/systemd-udevd
root 663 0.1 0.7 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
root 1151 0.1 1.9 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
polkitd 2429 0.1 5.1 mysqld --default-authentication-plugin=mysql_native_password
root 2430 0.1 1.1 node /api/server.js

内存使用率前十进程信息:
USER PID %CPU %MEM COMMAND
root 2376 1.5 10.4 java -Dfile.encoding=UTF-8 -Dspring.config.location=/opt/kkFileView-4.1.0/config/application.properties -jar /opt/kkFileView-4.1.0/bin/kkFileView-4.1.0.jar
polkitd 2429 0.1 5.1 mysqld --default-authentication-plugin=mysql_native_password
root 2724 0.9 2.5 node server/server.js
root 1151 0.1 1.9 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root 2926 0.0 1.6 /opt/libreoffice7.3/program/soffice.bin -accept=socket,host=127.0.0.1,port=2002;urp; -env:UserInstallation=file:///tmp/.jodconverter_socket_host-127.0.0.1_port-2002 -headless -nocrashreport -nodefault -nofirststartwizard -nolockcheck -nologo -norestore
root 2904 0.1 1.6 /opt/libreoffice7.3/program/soffice.bin -accept=socket,host=127.0.0.1,port=2001;urp; -env:UserInstallation=file:///tmp/.jodconverter_socket_host-127.0.0.1_port-2001 -headless -nocrashreport -nodefault -nofirststartwizard -nolockcheck -nologo -norestore
root 991 0.0 1.2 /usr/bin/containerd
root 2430 0.1 1.1 node /api/server.js
root 663 0.1 0.7 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

磁盘IO信息:io top 未安装信息获取失败


磁盘分区使用率是否正常:正常
磁盘:sda 磁盘序列号:获取信息失败
某分区磁盘使用率为:94% > 80% 请及时扩容
某分区磁盘使用率为:94% > 80% 请及时扩容
某分区磁盘使用率为:94% > 80% 请及时扩容
某分区磁盘使用率为:94% > 80% 请及时扩容
某分区磁盘使用率为:94% > 80% 请及时扩容
某分区磁盘使用率为:94% > 80% 请及时扩容
某分区磁盘使用率为:94% > 80% 请及时扩容

系统磁盘分区inode使用情况:
文件系统 类型 Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs devtmpfs 469K 357 469K 1% /dev
tmpfs tmpfs 472K 1 472K 1% /dev/shm
tmpfs tmpfs 472K 1.4K 470K 1% /run
tmpfs tmpfs 472K 16 472K 1% /sys/fs/cgroup
/dev/mapper/centos-root xfs 15M 817K 14M 6% /
/dev/sda1 xfs 250K 327 250K 1% /boot
overlay overlay 15M 817K 14M 6% /var/lib/docker/overlay2/ef19444fd2104a4f1d5f829a5e7c7df72d558f4b2f1499997e825976b039a9ec/merged
overlay overlay 15M 817K 14M 6% /var/lib/docker/overlay2/3a7eed53b775dfb6f598c77721740b26468c7d9fba2cf7c9b43d9176072f9a33/merged
overlay overlay 15M 817K 14M 6% /var/lib/docker/overlay2/aeabf7b39b3fa396c42de284bc62724268177e8707ff6a47fe91633c59297a9c/merged
overlay overlay 15M 817K 14M 6% /var/lib/docker/overlay2/559fe3b485066c832fa5cc58c0dc4167a7a88830527e2ad895ae494c6c157cd3/merged
overlay overlay 15M 817K 14M 6% /var/lib/docker/overlay2/bf213298f6faf1b82e9247c54f02f115ad4a455bdda9154bc40754b0b8ced519/merged
overlay overlay 15M 817K 14M 6% /var/lib/docker/overlay2/30bb98c473e3b93236517fa881cd4c4fd544555650fd62ff742569d6e63c702d/merged
shm tmpfs 472K 2 472K 1% /var/lib/docker/containers/f356da86faeedc68546ab6824d86f3a87e4cb66291b79d2c908829cc6afbc41c/mounts/shm
shm tmpfs 472K 1 472K 1% /var/lib/docker/containers/9113b7a0ddd1df1d83570905b5a11d9487f1266c6626ef19a892afa9c8bf7c69/mounts/shm
shm tmpfs 472K 1 472K 1% /var/lib/docker/containers/a96eb6a82671b508a1eadd117a4979d83f5ef990253064853c8502d878e20933/mounts/shm
shm tmpfs 472K 1 472K 1% /var/lib/docker/containers/97480b988d5327cc118ad5c790aa3e646b6eaace009f474cc990b2b1b66765bf/mounts/shm
shm tmpfs 472K 1 472K 1% /var/lib/docker/containers/e8458fef9ae54f211a4c985baf5a7f9872de6de278bcc33be9d7a2a9a5824322/mounts/shm
shm tmpfs 472K 1 472K 1% /var/lib/docker/containers/122a088deb7bb35ec48694a3e81bbfdfc07173626bb5b87b90181aa98ef2c8a7/mounts/shm
tmpfs tmpfs 472K 1 472K 1% /run/user/0

系统当前进程数:156
系统当前进程运行数:1
系统当前休眠进程数:152
系统当前停止进程数:8
系统当前僵尸进程数:3

系统当前允许最大fd数量:365456
系统当前已打开fd数量:2272
系统单个进程运行打开fd数量:1024

系统当前socket连接数:211
系统 established socket数量: 2
系统 sync socket数量:0
系统当前已建立socket如下:
本地:192.168.231.128:22 <=> 外部:192.168.231.1:59866
本地:192.168.231.128:22 <=> 外部:192.168.231.1:59873
################################# [ 系统安全巡检区 ] ######################################
防火墙状态: off
Selinux状态:Disabled

系统可登录用户数:1
系统可登录用户:root
用户 root 最后1次登录信息: root pts/0 192.168.231.1 六 9月 9 12:16:20 +0800 2023
系统当前登录用户:
用户: root 终端: tty1 登录时间: 2023-09-09 12:08 登录IP:
用户: root 终端: pts/0 登录时间: 2023-09-09 12:16 登录IP: 192.168.231.1

报错及解决办法

报错

1
module 'paramiko' has no attribute 'SSHClient'

原因:没有下载paramiko包

解决办法;

1
pip install paramiko -i https://mirrors.aliyun.com/pypi/simple/

报错

1
module 'paramiko' has no attribute 'AuthenticationException'

原因:python 的执行文件paramiko.py和paramiko的包同名了

解决办法;修改名字paramiko.py为paramiko_test.py重新执行

报错

1
由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

原因:检查服务器是否开启,可被链接, ip 和端口号,以及用户名密码

解决办法;:修改正确即可

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

1…345…38

继开

一辈子很短,努力的做好两件事就好:第一件事是热爱生活,好好的去爱身边的人;第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱。

303 日志
171 标签
RSS
gitee E-Mail
0%
鲁ICP备18007712号
© 2025 继开 | 站点字数统计: 262.2k
博客使用 Hexo 搭建
|
主题 — NexT.Mist v5.1.4
人访问 次查看