shell实用脚本1

参考公众号民工哥技术之路

场景一:

        有两台服务器,a服务器的IP为11.0.1.18,b服务器的IP为11.0.1.12,都有个目录/app/tmp/test,我们需要比较这个目录里面的文件的一致性

#!/bin/bash
#####################################
#检测两台服务器指定目录下的文件一致性
#####################################
#通过对比两台服务器上文件的 md5 值, 达到检测一致性的目的
dir=/app/tmp/test
b_ip=11.0.1.12
#将指定目录下的文件全部遍历出来并作为md5sum命令的参数,进而得到所有文件的md5值,并写入到指定文件中
find $dir -type f|xargs md5sum > /tmp/md5_a.txt
echo "please input server_b password"
ssh $b_ip "find $dir -type f|xargs md5sum > /tmp/md5_b.txt"
echo "please input server_b password"
scp  $b_ip:/tmp/md5_b.txt /tmp
#将文件名作为遍历对象进行一一比对
for f in `awk '{print $2}' /tmp/md5_a.txt`;do#以a机器为标准,当b机器不存在遍历对象中的文件时直接输出不存在的结果if grep -qw "$f" /tmp/md5_b.txt;thenmd5_a=`grep -w "$f" /tmp/md5_a.txt|awk '{print $1}'`md5_b=`grep -w "$f" /tmp/md5_b.txt|awk '{print $1}'`#当文件存在时, 如果 md5 值不一致则输出文件改变的结果if [ $md5_a != $md5_b ];thenecho "$f changed."fielseecho "$f deleted."fi
done

测试:

#11.0.1.18上测试目录
[root@ansible01 tmp]# tree /app/tmp/test/
/app/tmp/test/
├── 10.txt
├── 1.txt
├── 2.txt
├── 3.txt
├── 4.txt
├── 5.txt
├── 6.txt
├── 7.txt
├── 8.txt
├── 9.txt
└── wyx.txt
#11.0.1.12上测试目录
[root@k8s-master test]# tree /app/tmp/test/
/app/tmp/test/
├── 10.txt
├── 1.txt
├── 2.txt
├── 3.txt
├── 4.txt
├── 5.txt
├── 6.txt
├── 7.txt
├── 8.txt
└── 9.txt
#运行脚本
[root@ansible01 tmp]# sh check_file_md5.sh 
root@11.0.1.12's password: 
root@11.0.1.12's password: 
md5_b.txt                                                                                                                                                100%  541   466.3KB/s   00:00    
/app/tmp/test/10.txt changed.
/app/tmp/test/wyx.txt deleted.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/35994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《mysql》--mysql约束

数据库约束 有的时候数据库中的数据是有一定要求的,有些数据认为是合法数据,有些是非法数据,如果靠人工检查显然是不靠谱的; 数据库会自动的对数据的合法性进行校验检查目的就是,保证数据中能够避免被插入/修改一些非…

Linux基础 - 使用 ssh 服务管理远程主机(window linux vscode)

目录 零. 简介 一. 打开linux shh 二. window连接linux 三. linux连接linux 四. VSCode远程 零. 简介 SSH(Secure Shell)服务是一种网络协议,主要用于在不安全的网络环境中为计算机之间的通信提供安全的加密连接。 SSH 服务具有以下重要…

二、安装虚拟机

本篇来源:山海同行 本篇地址:https://shanhaigo.cn/courseDetail/1805875642621952000 本篇资源:以整理到-山海同行 一、官网下载centos7 1. 进入CentOS 官方网站 官方网站:https://www.centos.org/download/ 2. 选择iso 点击下…

Java中的注解:原理与实战

Java中的注解:原理与实战 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! Java注解(Annotation)是一种用于在代码中添加元数…

在nginx服务器发布项目以及在tomcat服务器发布项目

在nginx服务器发布项目: nginx有一个“热部署”或“无缝升级”的特性,这意味着在不停止服务的情况下,也可以更新配置文件和html文件夹。 如果上传的是配置文件,或者修改了nginx的配置,那么可能需要重启nginx来应用这…

高中数学:不等式-常用不等式知识点汇总

一、基本性质 比较大小的常用两种方法:作差法,作商法 等式性质 不等式性质 二、基本(均值)不等式 扩展 三、二次函数与一元二次方程不等式 定义 解的对应关系 一元二次不等式的求解过程 四、二元一次不等式(组)与线性规划 关键在于求多个不等…

无线领夹麦克风怎么挑选,能让声音变好听的领夹麦推荐大全

近年来,随着直播销售和个人视频日志(Vlog)的流行,自媒体内容创作已经成为一种文化现象。这一现象不仅改变了人们获取信息的方式,也极大地推动了相关音频设备的发展。无线领夹麦克风,以其轻巧的设计和出色的…

MySQL数据库基础练习系列:科研项目管理系统

DDL CREATE TABLE Users (user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,username VARCHAR(50) NOT NULL UNIQUE COMMENT 用户名,password VARCHAR(255) NOT NULL COMMENT 密码,gender ENUM(男, 女) NOT NULL COMMENT 性别,email VARCHAR(100) UNIQUE COMMENT 邮箱 …

【杂记-浅谈VRRP虚拟路由器冗余协议】

一、VRRP协议概述 VRRP,Virtual Router Redundancy Protocol,即虚拟路由器冗余协议,是一种用于提高网络可靠性和容错能力的协议。它能够在多个路由器之间共享一个虚拟IP地址,当主路由器失效时,备用路由器可以接管虚拟…

字节码编程ASM之idea插件asm bytecode outline的使用

写在前面 直接用ASM来编写字节码程序难度其实还是蛮大的,为此,就有热心人事开发了相关的idea插件 ,其中比较优秀的一个是asm bytecode outline,本文就来一起看下如何使用。 1:安装 file->setting->plugins,搜索asm bytec…

gin-vue-amdin 新增路由

1:在api目录的example 下新建controller 层如下图(): 在enter.go 中 加入 这个新建的结构体: 2:在router 的example 文件夹下 新建对应的路由文件 3:在initlize 的router 中 添加对应的代码&a…

PDF处理篇:有哪些免费的PDF注释工具

PDF 是一种功能强大的格式,广泛用于处理和传输数据。您可以创建自己的 PDF 文件,也可以使用其他人创建的 PDF 文件。但是,有时您想在 PDF 文件中包含其他文本、图形和其他元素。这就是 PDF 注释器为您提供帮助的地方。 有许多可用的 PDF 注释…

Bazel与Gradle工具差异

之前介绍Bazel文章中有同学闻到Bazel与Gradle工具的差异。这篇文章我们解答这个问题。 来自Bazel员工的说法 Bazel和Gradle强调构建体验的不同方面。在某种程度上,它们的侧重点是互斥的——Gradle对灵活性和非突出性的要求对它的构建结构进行了限制,而Bazel对可靠性和性能的…

无线领夹麦克风品牌排名,揭秘哪种领夹麦性价比高!

在直播电商和Vlog的热潮推动下,自媒体内容创作迎来了前所未有的繁荣。麦克风行业也因应这一趋势,迎来了快速的增长期。特别是无线领夹麦克风,以其便携性和高效的录音能力,迅速成为视频制作者的新宠。它不仅在直播带货和短视频制作…

allure安装教程

1、下载 allure的官网下载地址: https://github.com/allure-framework/allure2/releases 注意:官网时常访问失败,可以访问以下网址: https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ 选择一个版本&…

Qt实现开机自启两种方法包含注意事项以及常见问题解决

Qt开机自启教程 Qt是一个跨平台的C++框架,用于开发图形用户界面应用程序,同时也支持其他类型的应用程序开发,如命令行工具、服务器、嵌入式设备应用程序等。用户在虚拟机开发后使用交叉编译器放到设备中设置开机自启,以下是两种常用的方法。 通过Systemd 设置开机自启 1…

C++ CMake 预定义宏与变量

宏/变量 说明 CMAKE_SOURCE_DIR 顶层 CMakeLists.txt 所在的目录 CMAKE_BINARY_DIR 构建输出目录的顶层路径 CMAKE_CURRENT_SOURCE_DIR 当前处理的 CMakeLists.txt 所在的路径 CMAKE_CURRENT_BINARY_DIR 当前处理的 CMakeLists.txt 输出的构建目录 CMAKE_CURRENT_LIS…

Uniapp的使用

为什么要使用uniapp uniapp 可以进行多端开发,uniapp 在设计的时候就拥有许多兼容性代码,可以兼容很多的平台 如 支付宝小程序 html页面 微信小程序等,注重开发效率而不是运行效率时 ,就可以考虑一下 uniapp 当然也可以去…

深入浅出:MongoDB中的背景创建索引

深入浅出:MongoDB中的背景创建索引 想象一下,你正忙于将成千上万的数据塞入你的MongoDB数据库中,你的用户期待着实时的响应速度。此时,你突然想到:“嘿,我应该给这些查询加个索引!” 没错&…

python实现链接数据库查询方法步骤

前言 在python项目开发中,我们经常使用多种数据库存储数据,常用的有: MySQL:mysql-connector-python, PyMySQL PostgreSQL:psycopg2 SQLite:sqlite3(标准库) 下面是一个通用的步骤示例&#xff…