练习环境:

(1)所有服务器将防火墙和selinux关闭
(2)所有服务器的root密码设置为aixocm
(3)所有服务器都为10.0.100.*网段,并保证能够和其它主机通信
(4)所有服务器确保sshd服务已经启动(开放默认的22端口)

脚本要求实现:

将本机/etc目录下以conf为扩展名的文件打包压缩为tar.bz2,然后将此文件复制一份到10.0.100.1-->10.0.100.254地址段上所有开启的主机,具体路径为/tmp/sjjy/文件。在使用scp复制时无需手动输入密码。

脚本的大概思路:

(1)Tar_etc( )函数:实现对/etc下所有*.conf目录的打包,并判断是否打包成功。

(2)Nmap_ip( )函数:实现扫描已开启的主机。用nmap命令实现。并将这些主机IP写到/mydate/ip.txt文件中。

(3)Scp_ip( )函数:实现将压缩包发送到各个主机的指定目录下。 利用了#expect命令来实现的输入。

#!/bin/bash
#============================================
#function-->Tar_etc 打包/etc/*.conf下的文件
#============================================
Tar_etc()
{
tar jcvf /tmp/lyj.tar.bz2 /etc/*.conf &> /dev/null
if [ $? -eq 0 ]
then
echo "压缩包打包完成"
else
echo "压缩包打包失败请检查"
fi
}
#=========================================
#function-->Nmap_ip 扫描网段内开启的主机
#=========================================
Nmap_ip()
{
[ -f /mydate/ip.txt ]
if [ $? -eq 0 ]
then
cat /dev/null >/mydate/ip.txt
else
touch /mydate/ip.txt
fi
nmap -n -sP 10.0.100.1-254 | grep 10.0.100 | awk '{print $5}' >/mydate/ip.txt
}
#======================================
#function-->Scp_ip 复制文件到各个主机
#======================================
Scp_ip()
{
cat /mydate/ip.txt | while read line
do
(
/usr/bin/expect << EOF
set time 20
spawn scp /tmp/lyj.tar.bz2 root@$line:/tmp/sjjy
expect {
"*yes/no*"
{ send "yes\r";exp_continue }
"*password:"
{ send "aixocm\r"}
}
expect eof
EOF
) &>/dev/null if [ $? -eq 0 ]
then
echo "复制文件到$line成功!"
else
echo "复制文件到$line失败!"
fi
done
} Tar_etc
Nmap_ip
Scp_ip

[shell实例]——用脚本实现向多台服务器批量复制文件(nmap、scp)的更多相关文章

  1. 阿里云两台服务器之间拷贝文件命令scp

    参考:云栖社区 不同的Linux之间copy文件通常有4种方法 1.ftp 2.samba服务 3.sftp 4.scp 最简单的方法就是scp,可以理解为ssh管道下的cp命令 把当前一个文件cop ...

  2. Linux 两台服务器之间传输文件和文件夹

    今天处理一个项目要迁移的问题,突然发现这么多图片怎么移过去,可能第一时间想到的是先从这台服务器下载下来,然后再上传到另外一台服务器上面去,这个方法确实是可行,但是实在是太费时间了,今天我就教大家怎么快 ...

  3. Shell执行将脚本里的变量打印到指定日志文件

    首先需要定位获取任务的运行日志或者报错信息,才能定位问题. 通过shell调用有些脚本的话,日志信息会打印在shell里.不过也有用户在shell里调用正常,但是到crontab调用的时候就出错并且没 ...

  4. 进阶!基于CentOS7系统使用cobbler实现单台服务器批量自动化安装不同版本系统(week3_day5_part2)-技术流ken

    前言 在上一篇博文<cobbler批量安装系统使用详解-技术流ken>中已经详细讲解了cobbler的使用以及安装,本篇博文将会使用单台cobbler实现自动化批量安装不同版本的操作系统. ...

  5. 多台服务器下同步文件夹数据(rsync+inotify)

    网上有很多讲解rsync+inotify的教程,我就先贴出一个来大家去看吧,基本都是类似的. http://www.jb51.net/article/57011.htm 我就强调几点,按照上面的方法配 ...

  6. Linux从一台linux机器复制文件到另一台linux机器

    1.功能说明 scp 用于将文件/目录从一台linux系统复制到另一台linux系统.传输协议为SSH协议,保证了传输数据的安全性 其格式如下: (1)scp  本地linux系统文件路径   远程用 ...

  7. Centos7-两台Centos机器间复制文件

    我又两台Centos机器,一台192.168.1.1:另一台192.168.1.2 现在在将192.168.1.1上的一个文件复制到192.168.1.2.登陆到192.168.1.1然后运行命令 命 ...

  8. 两台Linux服务器之间复制文件

    一.scp 1.简介 scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的 2.软件安装 ...

  9. Linux 两台服务器之间传输文件

    一.scp命令的使用 1.传输文件(不包括目录) 命令格式:scp 源文件路径目录/需要传输的文件 目标主机的用户名@目标主机IP/主机别名:目标主机存储目录 举个例子:scp /root/ceshi ...

随机推荐

  1. 【MongoBD】MongoBD持久化

    参考:http://f.dataguru.cn/thread-139560-1-1.html 参考:http://blog.mongodb.org/post/33700094220/how-mongo ...

  2. sql语句小练习一

    create database aaa go use aaa go create table student(    sno varchar(3), sname varchar(4) not null ...

  3. 解决win 7&win xp等系统无法正常用U盘安装或启动

    目前,制作启动U盘通常是用ultraiso,但由于各种硬件设备与系统的更新,导致现在装系统会出现各种错误. 在用ultraiso制作的启动U盘,装XP时,可能找不到引导项:装win7时,可能提示”wi ...

  4. zip的打包与解包和包下载

    text文件压缩包解析与下载 //压缩包下载  private StreamedContent newsTemplate; //该方法是对压缩包进行下载     public StreamedCont ...

  5. JS时间

    function checkStartTime(){ var d1 = new Date(); var endTime = document.getElementById("secCreat ...

  6. Android 弹出框

    1.Java package com.fish.helloworld; import android.app.Activity; import android.app.AlertDialog; imp ...

  7. 自动发送EMAIL

    *&---------------------------------------------------------------------* *& Report  ZPP_SEND ...

  8. ChainOfResponsibility

    #include <iostream> using namespace std; class Chain { public: bool Handle() { return false; } ...

  9. Linux下CPU占用率高分析方法

    一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用1. 通过top命令找到可疑进程PID top - 09:37:18 up 70 days, 16:29 ...

  10. EasyUI datagrid checkbox数据设定与取值(转自http://blog.csdn.net/baronyang/article/dnetails/9323463,感谢分享,谢谢)

    这一篇将会说明两种使用 jQuery EasyUI DataGrid 的 Checkbox 设定方式,以及在既有数据下将 checked 为 true 的该笔数据列的 Checkbox 设定为 Che ...