linux自动批量拷贝文件

如果有一批机器同在一个局域网,这批机器所在地址段为192.168.100.1~192.168.100.256,用户名均为test,密码123123,如何批量将某个文件拷贝到这批机器中。

首先请确保这批机器已经安装了ssh服务并已成功运行;

其次在管理机器上(执行自动批量拷贝文件的机器)执行命令expect,如果没有此命令,需要通过系统源安装expect包,如果系统源没有此包,可在开源网站上下载expect的源码包并编译安装。

以下为自动部署的脚本copy.sh:

#!/bin/bash
for ((i=$1; i<=$2; i++))
do
        expect -c "
        spawn scp -r test.txt [email protected].$i:~/桌面/
        expect {
        \"*assword\" {set timeout 3; send \"123123\r\";}
        \"yes/no\" {set timeout 3; send \"yes\r\"; exp_continue;}
        }
        expect eof"
done

在命令行执行./copy  1 256

此脚本将当前目录下的test.txt文件拷贝到IP地址为192.168.100.1~192.168.100.256的机器上;

在执行脚本时,如果某些ip地址不存在,会出现长时间超时等待,如果想缩短超时等待时间,可配置文件/etc/ssh/ssh_config中的ConnectTimeout 1,即设置连接超时时间为1秒。

你可能感兴趣的:(tech)