利用群晖NAS+shell脚本实现运维命令执行结果文件自动上传

本文涉及的产品
文件存储 NAS,50GB 3个月
简介: 利用群晖NAS+shell脚本实现运维命令执行结果文件自动上传

利用群晖NAS+shell脚本实现运维命令执行结果文件自动上传

一、 需求场景如下

通过堡垒机批量运维Linux服务器,例如执行命令后的结果输出到文件后,然后将输出的结果文件统一发送到一个文件服务器上进行汇总

然后登录这个文件服务器上批量查看结果文件

二、实现过程思考

1、可以用使用群晖NAS作为这个文件服务器,但是通过什么协议上传会比较方便一点,上传时要考虑能够免输入账号密码

这时scp或者rsync会比较合适

(图片点击放大查看)

2、群晖需要开启rsync

(图片点击放大查看)

3、如果用rsync方式的话上传过来,需要考虑到多台服务器上传过来时,在文件名中加入对应服务器IP或者主机名进行区分

参考群晖官网的文档《如何通过SSH使用RSA密钥对登录DSM?》后,编写脚本最终实现了需求

https://kb.synology.cn/zh-cn/DSM/tutorial/How_to_log_in_to_DSM_with_key_pairs_as_admin_or_root_permission_via_SSH_on_computers

三、具体的实现步骤

1、SSH登录群晖NAS

sudo -i 切换成root用户
生成密钥
ssh-keygen -t rsa -b 2048
cp id_rsa.pub /volume1/homes/yuanfan/.ssh/authorized_keys
cp id_rsa /volume1/homes/yuanfan/.ssh/nas_id_rsa.pem

(图片点击放大查看)

再退出root用户

cd .ssh/
chown -R yuanfan:users authorized_keys

(图片点击放大查看)

2、然后NAS Web界面上面下载这个nas_id_rsa.pem

(图片点击放大查看)

上传这个Linux服务器上面

测试是否可以免密登录NAS的SSH

chmod 0600 nas_id_rsa.pem
ssh -i nas_id_rsa.pem yuanfan@192.168.31.200

(图片点击放大查看)

3、编写脚本

执行命令后的结果输出到文件后,然后将输出的结果文件统一发送到NAS文件服务器的这个路径/volume1/ShareFolder/LinuxServer_commandresult

例如要执行的命令是df -PTh(这里只是简单举例,方便演示)

这里为了省去每台服务器上都上传密钥文件,直接将密钥文件内容转到文件的过程写到脚本中

server_command_result-upload.sh

(图片点击放大查看)

vim server_command_result-upload.sh
#!/bin/bash
cat >  /tmp/nas_id_rsa.pem  << EOF
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEAy0SKLeKH7Pa1DU1HEND2GBKj9GkH9iq0rQqDkaXM0jZbHBcV0pe3
YpVzwlsxETfwMMJmJVt/Ihxj/5LPRa9M+vAhmMb1Nj58FLG3UMVpp9pBwJCU4xAR1ou74N
tSwfrTdjOhzMGPen+Lnht5/P6/4rH74cJ9sSbO6DrKR8sNOZZYxql7RHs+sbLFAI0RUQhn
xTBskSVtBqVX9M2wg5F3txdkjZbGYnHjkKzZhMt7rWuVs2m5xsGc60fa77xeaPGSYHChWw
SAUZQQ1KZSNJFshaEyl7wMwm2UVR3w48RxgdHxy/iOZ8VMxSqxd2NIGyLQTxD3PAvnNcyc
YXh0prfU5QAAA8g8H4q7PB+KuwAAAAdzc2gtcnNhAAABAQDLRIot4ofs9rUNTUcQ0PYYEq
P0aQf2KrStCoORpczSNlscFxXSl7dilXPCWzERN/AwwmYlW38iHGP/ks9Fr0z68CGYxvU2
PnwUsbdQxWmn2kHAkJTjEBHWi7vg21LB+tN2M6HMwY96f4ueG3n8/r/isfvhwn2xJs7oOs
pHyw05lljGqXtEez6xssUAjRFRCGfFMGyRJW0GpVf0zbCDkXe3F2SNlsZiceOQrNmEy3ut
a5WzabnGwZzrR9rvvF5o8ZJgcKFbBIBRlBDUplI0kWyFoTKXvAzCbZRVHfDjxHGB0fHL+I
5nxUzFKrF3Y0gbItBPEPc8C+c1zJxheHSmt9TlAAAAAwEAAQAAAQBA0qbOY0O9yh+LEm3r
avhQTQGEXEpxssTTulqjBCEBmNwNZT9MXZ3aDpdQEAzh1NkAc75ng3pTwoIRaxw2uOTv0c
ylEC37Eoo3f0VauNos8Wmuo20XzHQj24Qa/VazDe6J74VV6xR6mFpKHbEVgZhoDyKoqIG1
EQ9C+ByyMIsTJdD9Dbw9Oe6zdL/I5aLHIDb7I8nCNWgSEu/GLdMBRruQlE9e5CwG7tY79B
4UQbcXj+jAnbLrRvaDjPj3RJbXXXXXXXXXXXXXXXucTl5G/UZMxuUF4YF8Uon0DacO6ag2
mvLSTWO3RfYV8D3Z4ZA5GnY7YlwWxMjPHVzgbQOZvrgxAAAAgQCL9xA6/MIEJGWXMs5XI7
L1A8c69FaKd4yGvcJQpFK/6XT8EFKARoZ13u5/tLUfnoy+IE01BZTN0u92N07hrGHrpNVi
6KE72YdRDlGujZNi5LI1Y4omavK63r4mJeP1VaQEQtKlt4K7kGvxK+UqBBcrWGDy3R1oMO
J0LWNS31W8wAAAAIEA/OASa4cgk2jmpEfcb/SssGAoTPaQyZyc30rW49hpbwqDJUIckG4/
3ufuyViv15zZORaQDMkpK+VQ8k4iiOf3YeGU2KHzCrh3I5fcg5wWFdWLdVgNT+TzS6ReNg
pegXchwIuPrG+ajQLv1+NB+PrTKH0vqHHbHmEzC3pughMeYgcAAACBAM3HivGezbXyxL0k
m+jJVgHTh/DjDgVDlYGEtUdEAAsh4Asf7R4nNpwFKufYOw4GlsR54v2TZliw3bgGafzGPr
IgK7cG/kM7ZtmkVwdQwh70hEAbAM//+FIdYExPH/uzC8vEZnULf+LXK9wmPbNWd4u5FM7m
AleakBwsijd6oeazAAAAD3Jvb3RARFM5MThfRFNNNwECAw==
-----END OPENSSH PRIVATE KEY-----
EOF
chmod 600 /tmp/nas_id_rsa.pem
FILENAME=$(hostname)_$(hostname -I | tr ' ' '_')
df -PTh > /tmp/${FILENAME}.txt
rsync -avz -e "ssh -i /tmp/nas_id_rsa.pem -o StrictHostKeyChecking=no" /tmp/${FILENAME}.txt yuanfan@192.168.31.200:/volume1/ShareFolder/LinuxServer_commandresult

4、批量运维

(图片点击放大查看)

这时我模拟堡垒机批量上传脚本并执行的过程

(图片点击放大查看)

(图片点击放大查看)

5、NAS上查看脚本自动上传的结果文件

(图片点击放大查看)

我上面只在两台服务器上执行,当你有多台服务器时批量执行该脚本就大大提高了效率

相关实践学习
基于ECS和NAS搭建个人网盘
本场景主要介绍如何基于ECS和NAS快速搭建个人网盘。
阿里云文件存储 NAS 使用教程
阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas
相关文章
|
17天前
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
1月前
|
弹性计算 人工智能 运维
摆脱繁琐命令-让运维更加流畅-阿里云ECS操作系统控制台运维篇
阿里云操作系统控制台提供了便捷的服务器监控与管理功能,简化了运维工作。通过将多台服务器纳入统一监控平台,用户可以快速查看CPU、内存、磁盘和网络等关键资源的使用情况,避免了逐一远程连接查询的繁琐操作。此外,该工具支持自动化数据汇总,极大地方便了日报、周报和月报的编写。测试过程中,系统展示了良好的稳定性和响应速度,尤其在网络抖动和大文件健康状态测试中表现出色。整体体验流畅,显著提升了运维效率。 操作系统控制台地址:[点击访问](https://alinux.console.aliyun.com/)
81 26
摆脱繁琐命令-让运维更加流畅-阿里云ECS操作系统控制台运维篇
|
1月前
|
关系型数据库 Shell 网络安全
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
2月前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
131 32
|
2月前
|
JavaScript Shell C#
多种脚本批量下载 Docker 镜像:Shell、PowerShell、Node.js 和 C#
本项目提供多种脚本(Shell、PowerShell、Node.js 和 C#)用于批量下载 Docker 镜像。配置文件 `docker-images.txt` 列出需要下载的镜像及其标签。各脚本首先检查 Docker 是否安装,接着读取配置文件并逐行处理,跳过空行和注释行,提取镜像名称和标签,调用 `docker pull` 命令下载镜像,并输出下载结果。使用时需创建配置文件并运行相应脚本。C# 版本需安装 .NET 8 runtime。
158 2
|
3月前
|
运维
阿里云服务器批量执行命令(系统运维管理oos)
阿里云【系统运维管理oos】批量执行详情
86 5
|
5月前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
449 3
|
5月前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
215 1
|
5月前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
256 3
|
5月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
200 2