首页 > 其他分享 >用户+文件同步脚本

用户+文件同步脚本

时间:2023-06-16 14:34:05浏览次数:31  
标签:脚本 tmp rsync 同步 group 用户 cat bin shadow

cat  /opt/inotify_rsync.sh

#!/bin/bash
export RSYNC_PASSWORD=JxwKRl%!xxxxxx
# 实时监控 61.212 主机/sftp/ 的变化
INOTIFY_CMD="/usr/local/bin/inotifywait -mrq -e modify,create,attrib,move,delete  /sftp/"
# 
RSYNC_CMD="rsync -azH --delete   /sftp/  [email protected]::backup"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 5 ] ; then
        $RSYNC_CMD
    fi
done

cat /tmp/rsync_user.sh

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export PATH
# 合并变量声明
export RSYNC_PASSWORD='Jxxxxxx8' \
       USER='vmusexxxxr' \
       PASS='JxwKRl%!UrxxxN8' \
       root_password='qA1!wS2xxxxxrF4$' \
       backup_host='172.xxxx.61.242' \
       path_file='backup_userfile'

# 同步用户密码的方法
funuser() {
    command_to_execute="cat /tmp/passwd >/etc/passwd; cat /tmp/shadow >/etc/shadow; cat /tmp/group  >/etc/group"
    expect << EOF
        set timeout 30
        spawn ssh $USER@$backup_host
        expect {
            "yes/no" { send "yes\r"; exp_continue }
            "password:" { send "$PASS\r" }
        }
        expect "$USER@*" {
            send "su - root\r"
            expect "Password:"
            send "$root_password\r"
            expect "#"
            send "$command_to_execute\r"
            expect "#"
            send "exit\r"
        }
        expect "$user@*" { send "exit\r" }
        expect eof
EOF
}

# 判断vip是否在这台主机上
vip=$(ip a | grep -w "172.25.61.188/32" | awk '{print $2}')
if [[ $vip == "172.25.61.188/32" ]]; then
    rsyncagent=$(ps -elf | grep inotify_rsync.sh | wc -l)
    if [[ $rsyncagent -eq 1 ]]; then
        sh /opt/inotify_rsync.sh &
        sleep 2
    fi
    echo "任务开始"
    cat /etc/passwd > /tmp/passwd
    cat /etc/group > /tmp/group
    cat /etc/shadow > /tmp/shadow
    rsync -azH --delete /tmp/passwd /tmp/group /tmp/shadow backuper@$backup_host::$path_file
    if [[ $? -eq 0 ]]; then
        funuser
    else
        break
    fi
    echo "任务结束"
else
    ps -elf | grep inotify_rsync.sh | grep -v 'color=auto' | awk '{print $4}' | xargs kill
fi

标签:脚本,tmp,rsync,同步,group,用户,cat,bin,shadow
From: https://blog.51cto.com/zhaochengsheng/6499495

相关文章

  • 同步盘换端10080和10081端口
    common.ini中添加ShareWebWindowsServerPort=10090ShareWebWindowsClientPort=10091[Global]loginmode=0autorun=1clearcache=0syncingtips=0cachepath=lastserver=b4cc451bdac94e731ed35882797f371ehideselectdirpage=0shellIconNeedRename=0RegNameLocalSync="......
  • Windows批量修改或去除文件前缀脚本
    chcp65001@echooffsetlocalEnableDelayedExpansionset/pfolderPath="请输入需要修改前缀的文件夹路径:"set/poldPrefix="请输入原前缀:"set/pnewPrefix="请输入新前缀:"for%%iin("%folderPath%\%oldPrefix%*")do(set"filen......
  • js~在浏览器中对用户名和密码进行存储
    base64函数btoa()和atob()是JavaScript中的标准函数,通常在现代浏览器中都能正常工作。然而,它们在处理非ASCII字符时可能存在一些兼容性问题。这些函数的主要限制在于它们仅支持ASCII字符集,对于非ASCII字符(如Unicode字符)可能会产生不可预测的结果。在处理非ASCII......
  • suse12操作系统普通用户报错error while loading shared libraries: libcap.so.2: can
    1、故障描述linux主机普通用户执行ping命令报错ping:errorwhileloadingsharedlibraries:libcap.so.2:cannotopensharedobjectfile:permissiondenied2、故障原因 超级用户修改了根目录权限为655 3、解决方案chmod755/ ......
  • 执行shell脚本获取返回值字符串
    std::stringexecuteShellCommand(conststd::string&command){ FILE*pipe=popen(command.c_str(),"r"); if(!pipe)return"ERROR"; charbuffer[128]; std::stringresult=""; while(!feof(pipe)) { if(fgets(buffer,1......
  • OneDrive同步任意指定文件夹并手动开启同步
    OneDrive同步任意指定文件夹并手动开启同步同步指定文件夹原理:借助符号连接把其他路径的文件夹,创建在自动同步的文件夹中。步骤:点击开始菜单,在搜索框中输入cmd,右键选择以管理员模式运行命令提示符。输入以下命令并执行,创建目录符号链接。命令模板:mklink/d"本地OneDr......
  • feign携带用户信息
    1.通过feignConfig配置文件来携带用户信息。2.@FeignClient(name="user-server",configuration={FeignConfig.class})3.feignConfig是实现了请求拦截器的,他可以把用户信息放到requestTemplate中。在header里面放一个key(user-info),value是用户信息。4.服务端,feign实现了......
  • sftp 设置仅能访问自己目录的用户
    1.创建一个目录,owner为root,权限为750或755,此处为/home/test01添加一个用户test01,home目录设置为/home/test01再创建一个子目录用于用户上传:/home/test01/upload,owner为test01,$mkdir/home/test01$chownroot:test01/home/test01$mkdir/home/test01/upload$chownt......
  • Java 多线程同步问题的探究(三、Lock来了,大家都让开【1. 认识重入锁】)
    在上一节中,我们已经了解了Java多线程编程中常用的关键字synchronized,以及与之相关的对象锁机制。这一节中,让我们一起来认识JDK5中新引入的并发框架中的锁机制。我想很多购买了《Java程序员面试宝典》之类图书的朋友一定对下面这个面试题感到非常熟悉:问:请对比synchronized......
  • 公众号已关注用户,扫描带参二维码没有事件(SCAN)推送?公众号认证权限
    公众号启用了服务器配置,关注、取消关注事件,CLICK事件,服务器都能收到事件推送,但是没有扫描带参二维码事件(SCAN)推送公众号需要认证才支持公众号认证权限:权限......