配置文件备份方案(expect+shell)
需求描述:备份所有线上服务器squid、httpd、mysql、nginx的配置文件
环境:在公司内网采用expect+shell脚本模式,进行批量备份。expect脚本通过ssh登录服务器,从本地copy一份shell脚本到服务器上,然后执行脚本将配置文件遍历出来传到指定服务器进行备份。
1、expect脚本batch_backupconf.exp
#!/usr/bin/expect
set timeout 30
set target_host [lrange $argv 0 0]
set target_port [lrange $argv 1 1]
set source_host sphinx1906.phpdba.com
set source_port 9191
set login_name root
set password 123456 spawn ssh $target_host -p $target_port -l $login_name -i /root/.ssh/id_rsa expect {
"*(yes/no)?" {
send "yes\r"
exp_continue
}
"*assword:" {
send "$password\r"
}
} expect "#"
send "uname\n"
expect "Linux"
send_user "Now you can do some operation on this terminal\n"
expect "#"
send "scp -P $source_port $source_host:/root/chen-123/expect/backup_conf.sh
\/root/ \n"
exec sleep 15
send_user "开始执行代码 \n"
send "sh backup_conf.sh $target_host \n"
expect {
"*(yes/no)?" {
send "yes\r"
exp_continue
}
"*assword:" {
send "$password\r" }
}
exec sleep 5
expect "#"
send "rm -f backup_conf.sh \n"
send_user "\nThis is $source_host!\n操作完成!\n"
exec sleep 1
exit
2、shell脚本backup_conf.sh
#!/bin/sh
if [ $# != 1 ];then
echo "请传参数!"
exit 1;
fi for i in `find /opt/phpdba/ -maxdepth 4 -type f -regex ".*\.\(com\|conf\|cnf\)"
\-print|grep -E 'httpd\.conf|nginx\.conf|squid\.conf|*\.com|*\.cnf'`;
do
tmp=`echo "$i"|sed s#/#_#g`
echo $i
scp -Pxxx $i xxx.xxx.xxx.xxx:/opt/phpdba/backup_conf/$1_${tmp}
\`date +%Y%m%d%H`
done
3、batch_backupconf.sh
#!/bin/sh
cat iplist_all|while read line
do
host_ip=`echo "$line"|awk -F'\t' '{print $1}'`
host_port=`echo "$line"|awk -F'\t' '{print $2}'`
echo $host_ip"->"$host_port
/usr/bin/expect batch_backupconf.exp $host_ip $host_port
done
4、iplist_all
192.168.0.9 22
192.168.0.213 22
192.168.0.114 29622
192.168.0.116 29622
配置文件备份方案(expect+shell)的更多相关文章
- centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数据库读写分离 双主搭建 mysql.history 第二十九节课
centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数 ...
- Haproxy安装部署文档及多配置文件管理方案
一.部署安装 二.软件配置 三.系统服务 四.日志配置 五.小结 文章目录 最近我在负责一个统一接入层的建设项目,涉及到 Haproxy 和 ospf 的运维部署,本文分享一下我在部署 Haproxy ...
- 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署
阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...
- javaweb常用工具类及配置文件备份
Javaweb常用工具类及配置文件备份 做一个代码备份,以后常用到的. hibernate工具类备份 package com.dly.service; /* * hibernate获取sessi ...
- Vsftp的PASV mode(被动模式传送)和Port模式及 Linux下VsFTP配置全方案
什么叫做PASV mode(被动模式传送)?他是如何工作的? FTP的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接.FTP服务程序一般会支持两种不同的模式,一种是Po ...
- VSCode官方的配置同步方案
前言 这几天在迁移电脑工作环境,对于VSCode,我实在不想从头做下载插件.配置代码规则这样的事情,于是求助百度,搜索结果靠前的解决方案基本都是使用Setings Sync插件,于是我就从了. 经过好 ...
- Expect & Shell: 网络设备配置备份
1. 环境介绍及效果展示 A. centos 6.6 x64 B. tftp-server 0.49 C. 脚本目录 D. 备份目录 E. 备份邮件 2. tftp服务配置 A. [root@step ...
- MongoDB高可用集群配置的方案
>>高可用集群的解决方案 高可用性即HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性. ...
- jvm详情——7、jvm调优基本配置、方案
堆设置 -Xmn:设置年轻代大小 (整个堆大小=年轻代大小 + 年老代大小 + 持久代大小.持久代一般 固定大小为64m,所以增大年轻代后,将会减小年老代大小.此值对系统性能影响较大,Sun官方推 ...
随机推荐
- linux系统编程之进程(五):exec系列函数(execl,execlp,execle,execv,execvp)使用
本节目标: exec替换进程映像 exec关联函数组(execl.execlp.execle.execv.execvp) 一,exec替换进程映像 在进程的创建上Unix采用了一个独特的方法,它将进程 ...
- BaseAdapter
作者通过Java代码来实现布局,而我习惯通过.xml文件来实现,所以我对程序做了如下修改 MainActivity.java public class MainActivity extends Act ...
- VIM 正则表达式详解及与 perl 正则的区别
转载自:http://www.xuebuyuan.com/806332.html:个人进行了一些修正和添加. 下面我们对 VIM 正则表达式进行介绍并会显示指出其与 Perl 正则的不同之处. 字符集 ...
- 基于zookeeper的主备切换方法
继承CZookeeperHelper即可快速实现主备切换: https://github.com/eyjian/libmooon/blob/master/include/mooon/net/zooke ...
- PrefixHeader.pch 在工程中的使用
1) 新建一个pch文件 2) 在 工程 Build Settings 中搜索 header 将Precompile Prefix Header 置为YES 2) 选中pch文件, 将右侧相对路径 ...
- (匹配)Antenna Placement --POJ --3020
链接: http://poj.org/problem?id=3020 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82834#probl ...
- Oracle EBS打补丁
http://hutianci.iteye.com/blog/1457287 l例子: 打 Patch# 11843100:R12.CAC.B 打PATCH之前先查询一下是否已经有了这个PATCH ...
- 在ContextLoaderListener中使用注解注入的类和job中使用注解注入的类
场景:在ContextLoaderListener子类中加载job,为JobFactory的实现类声明@Component后,在ContextLoaderListener子类中为scheduler设置 ...
- 你好,Azure DevOps Server 2019;再见,Team Foundation Server
微软正式发布Azure DevOps Server 2019的第一个版本,作为Team Foundation Server (TFS)2018的升级版本和替代产品. 这是目前市面上唯一一款将产品名称冠 ...
- C#文件监控对象FileSystemWatcher实例,通过监控文件创建、修改、删除、重命名对服务器数据进行实时备份
先上图,简单的windorm界面:此为最初的版本,后续会增加监听多个源目录的功能.log功能.进度条展示功能等. 1.初始化监听 /// <summary> /// 初始化监听 /// & ...