利用群晖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
相关文章
|
26天前
|
运维 Kubernetes 监控
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
38 0
|
3月前
|
Shell 文件存储 Android开发
智能电视安装VLC配合frpc实现播放远程群晖NAS上的电影
智能电视安装VLC配合frpc实现播放远程群晖NAS上的电影
285 0
|
27天前
|
运维 Kubernetes 容器
K8S运维命令必备kubectl命令总结
K8S运维命令必备kubectl命令总结
28 3
|
13天前
|
运维 网络协议 安全
neutron 运维命令
OpenStack Neutron是OpenStack的网络服务,它负责管理虚拟机和其他计算资源之间的网络连接。Neutron提供API和插件,支持多种网络拓扑和服务,包括虚拟网络和物理网络的配置、管理和调度。它还支持IP地址分配、网络连接和安全策略等。
9 1
|
24天前
|
运维 Linux Shell
linux运维常用命令
linux运维常用命令
|
1月前
|
运维 监控 Linux
linux脚本自动化运维任务
Linux自动化运维通过脚本提升效率,涵盖服务管理(启停服务、异常恢复)、系统监控(资源警报)、日志管理(清理分析)、备份恢复、补丁更新、自动化部署(如Ansible)、网络管理、定时任务(cron)和故障排查。结合shell、Python及工具,形成高效运维体系。
23 3
|
1月前
|
监控 网络协议 Linux
Linux 命令大全 & CentOS常用运维命令
Linux 命令大全 & CentOS常用运维命令
158 0
|
1月前
|
网络协议 文件存储
如何公网远程连接本地群晖NAS中的WebDAV
如何公网远程连接本地群晖NAS中的WebDAV
73 0
|
2月前
|
运维 Linux Docker
Linux运维工程师必须要掌握的Docker命令,我给你整理好了!
Linux运维工程师必须要掌握的Docker命令,我给你整理好了!
170 2
|
2月前
|
运维 网络协议 Linux
Linux 这50个 systemd 命令值得每位Linux运维工程师收藏!
Linux 这50个 systemd 命令值得每位Linux运维工程师收藏!
443 0
Linux 这50个 systemd 命令值得每位Linux运维工程师收藏!