利用群晖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
目录
打赏
0
0
0
0
37
分享
相关文章
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
“说说看,如果一个Pod的容器没有Shell,如何测试它能否访问外网?”
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
docker运维查看指定应用log文件位置和名称
通过本文的方法,您可以更高效地管理和查看Docker容器中的日志文件,确保应用运行状态可控和可监测。
184 28
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
93 20
使用Python执行Shell命令并获取结果
在实际应用中,可以根据需要选择适当的参数和方法来执行Shell命令,并处理可能出现的各种情况。无论是系统管理、自动化任务还是数据处理,掌握这些技巧都将极大地提高工作效率。
119 12
|
6月前
|
【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。
372 56
AI Shell:在命令行里“对话” AI ,微软推出将 AI 助手引入命令行的 CLI 工具,打造对话式交互命令行
AI Shell 是一款强大的 CLI 工具,将人工智能直接集成到命令行中,帮助用户提高生产力。AI Shell 支持多种 AI 模型和助手,通过多代理框架提供丰富的功能和灵活的使用模式。
550 7
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
120 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
138 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
6月前
|
Shell printf 命令
10月更文挑战第3天
46 1
|
6月前
|
Shell echo命令
10月更文挑战第3天
46 0