需求描述:备份所有线上服务器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)的更多相关文章

  1. centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数据库读写分离 双主搭建 mysql.history 第二十九节课

    centos  MySQL主从配置 ntsysv   chkconfig  setup命令  配置MySQL 主从 子shell  MySQL备份  kill命令  pid文件  discuz!论坛数 ...

  2. Haproxy安装部署文档及多配置文件管理方案

    一.部署安装 二.软件配置 三.系统服务 四.日志配置 五.小结 文章目录 最近我在负责一个统一接入层的建设项目,涉及到 Haproxy 和 ospf 的运维部署,本文分享一下我在部署 Haproxy ...

  3. 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署

    阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...

  4. javaweb常用工具类及配置文件备份

    Javaweb常用工具类及配置文件备份   做一个代码备份,以后常用到的. hibernate工具类备份 package com.dly.service; /*  * hibernate获取sessi ...

  5. Vsftp的PASV mode(被动模式传送)和Port模式及 Linux下VsFTP配置全方案

    什么叫做PASV mode(被动模式传送)?他是如何工作的? FTP的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接.FTP服务程序一般会支持两种不同的模式,一种是Po ...

  6. VSCode官方的配置同步方案

    前言 这几天在迁移电脑工作环境,对于VSCode,我实在不想从头做下载插件.配置代码规则这样的事情,于是求助百度,搜索结果靠前的解决方案基本都是使用Setings Sync插件,于是我就从了. 经过好 ...

  7. Expect & Shell: 网络设备配置备份

    1. 环境介绍及效果展示 A. centos 6.6 x64 B. tftp-server 0.49 C. 脚本目录 D. 备份目录 E. 备份邮件 2. tftp服务配置 A. [root@step ...

  8. MongoDB高可用集群配置的方案

    >>高可用集群的解决方案 高可用性即HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性. ...

  9. jvm详情——7、jvm调优基本配置、方案

    堆设置 -Xmn:设置年轻代大小   (整个堆大小=年轻代大小 + 年老代大小 + 持久代大小.持久代一般 固定大小为64m,所以增大年轻代后,将会减小年老代大小.此值对系统性能影响较大,Sun官方推 ...

随机推荐

  1. 2018.08.31 bzoj3566: [SHOI2014]概率充电器(概率dp+容斥原理)

    传送门 概率dp好题啊. 用f[i]" role="presentation" style="position: relative;">f[i] ...

  2. Django入门与实践 1-16章总结

    注意事项:随时备份.随时记录.从宏观到微观 不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之:学至于行之止矣 安装 Python 3.6.2 pip install django==1.11.4 ...

  3. VMware + LInux + Xshell 连接环境设置(心得体会)

    准备好VMware软件,和Linux 和xshell三款软件,下载和安装好,这里VMware是十二,Linux是CentOs 6 ,xshell是5 其实没有什么区别只要版本兼容就行,我们就可以实现远 ...

  4. WriteableBitmap(一)

    通常,WPF中的位图是不可变的.不可变的位图非常有效,如果您希望进行大量的动态更改,创建和销毁它们的开销会变得非常昂贵.在这种情况下,您需要一些更灵活的东西——WriteableBitmap. Wri ...

  5. ubuntu16.4中开启vncserver进行远程桌面

    使用x11vnc作为vncserver端 1 安装x11vnc $ sudo apt-get update $ sudo apt-get install x11vnc 2 生成密码 $ x11vnc ...

  6. 一次简单完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试,手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文就基于python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化 ...

  7. SwapBuffers的等待,虚伪的FPS(转)

    FPS在实时渲染中扮演着一个重要的角色,也许你会去笑一个不懂FPS是什么的游戏新手,但也许,这只是五十步笑一百步罢了.你能读懂SwapBuffers的深情等待吗?——ZwqXin.com frames ...

  8. hdu 1425

    题目 这道题用快排做总是会超时,但是别人的快排就不会超时,最后看博客说最保险的方法还是用哈希的思想[哈希思想:散列再循环,对每一个数字进行通过改变哈希表的地址散列放置,将散列地址的哈希表记为1,这样 ...

  9. 老刘 Yii2 源码学习笔记之 Module 类

    关系类图 从上图可以看出 Application 类继承了 Module,在框架中的是非常重要角色. 加载配置 public function setModules($modules) { forea ...

  10. Android Sms短信发送

    界面布局: 具体代码: private void sendSms() { // 获取电话号码和短信内容 String number = number1.getText().toString(); St ...