同步文件至多个机器脚本(免输密码)

转载请标明出处~

#!/bin/bash

SPATH=/tmp/index.js    #测试路径/文件
DPATH=/tmp/index.js_bak  #目标路径/文件

distribute_rsync () {   ###分发函数
expect -c "  
spawn rsync -aP $1 $3:$2;
expect "password:" {send \"testpasswd\r\"};

expect eof;
"
}

for ADDR_IP in `cat addr_ip`  ## addr_ip 为ip地址文件
do
echo -e "\e[32mrsync for $ADDR_IP ........\e[0m"

distribute_rsync $SPATH $DPATH $ADDR_IP

done

所遇问题以及问题解决:

1、在bash 编译环境下,直接使用expect ,spawn报错:命令无法找到

distribute.sh: line 8: spawn: command not found

尝试解决1: 添加#!/usr/bin/expect

报错:无法识别bash 环境下的变量定义以及函数定义

原因:expect 环境下,变量定义直接使用 : set 变量 值

        函数定义: proc 函数名(参数1 参数2....){}

最终解决:使用expect -c " ... "  ,在bash 环境下直接进入expect环境,可以完成交互部分(输入密码)

注意:expect -c 可以完成多次交互,但是需要注意句尾分号已经转义符以及 expect eof ;的使用。

运行结果截图:

时间: 2024-10-04 16:37:43

同步文件至多个机器脚本(免输密码)的相关文章

20.31 expect脚本同步文件 20.32 expect脚本指定host和要同步的文件 20.

20.31 expect脚本同步文件 20.32 expect脚本指定host和要同步的文件 20.33 构建文件分发系统 20.34 批量远程执行命令 原文地址:http://blog.51cto.com/12058686/2108318

rsync同步文件(多台机器同步代码...)

常用组合 rsync -av --delete-after --exclude-from="a.txt"  x/x -e ssh x:/x/x a.txt 制定忽略的文件,如 .git -v, --verbose 详细模式输出 -q, --quiet 精简输出模式 -c, --checksum 打开校验开关,强制对文件传输进行校验 -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD -r, --recursive 对子目录以递归模式处

CentOS下实现SCP免输密码传送文件

前提条件:两台CentOS主机拥有相同的账户名,假设主机A和主机B拥有相同的用户名binguo,只需下面两步 1.以binguo帐户名登录主机A,主目录下执行如下命令生成配对密钥,不用管提示,一路回车: ssh-keygen -t rsa 2.将主目录下隐藏目录.ssh中的id_rsa.pub文件复制到主机B的binguo主目录的/.ssh/目录中,并重命名为authorized_keys. cd .sshscp id_rsa.pub 主机B:/home/binguo/.ssh/authoriz

mac terminal ssh client shuttle 免输密码

免输入密码登录 不需要iterm和zoc等第三方软件,alias(纯终端)和shuttle(有UI)两种方式使用密码(不需要手动输入)登录目标机器 准备工具 sshpass,shuttle 密码配置文件 密码文件(明文存储,若考虑强安全问题,请绕道)格式:hostname(已在系统hosts文件定义), user, password, ssh_port $ cat /Users/zhang/zhangsan/work/secure vm-001 root 123456 1122 vm-002 r

PuTTY免输密码自动登录Linux

1.使用PuTTY安装目录里的puttygen.exe工具.先点“生成(Generate)”,然后随意移动鼠标直到进度条填满,即可生成密钥 公钥部分:把上边那一段文字全选->复制备用.(不要点击“保存公钥(Save Public Key)”,点那个保存的公钥没有用!)私钥部分:点击“保存私钥(Save Private Key)”,保存一个.ppk文件.注:别给密钥文件加密码——加了密码,每次使用.ppk文件时就都需要提供,就背离自动登录这个目的. 自动登录将公钥和私钥分别告知linux和PuTT

Python不同电脑之间传输文件实现类似scp功能不输密码

SCP vs SFTP 通过paramiko还可以传输文件,如何通过paramiko在计算机之间传输文件,通过阅读官方文档,发现有如下两种方式: sftp = paramiko.SFTPClient.from_transport(ssh.get_transport()) sftp = ssh.open_sftp() 即新建一个SFTPClient对象,该对象复用之前的SSH连接,因此,我们使用sftp传输文件时,不需要再次进行用户认证. 文件上传 In [59]: sftp.put('memor

普通用户免输密码切换root

#一般安全起见生产环境都会禁止root账号登录,基本上都是用普通用户ssh登录以后再切换root账户. #而默认sudo su -切换root是需要密码的. 解决: 1.编辑配置文件/etc/pam.d/su vim /etc/pam.d/su # Uncomment the following line to implicitly trust users in the "wheel" group. auth            sufficient      pam_wheel.s

[已解决] windows 下 git 免输密码

在 .git/config 里面加上这句话即 [credential] helper = store 原文地址:http://www.cnblogs.com/gifisan/p/5829578.html

Windows下自动同步文件的小脚本

分享两个自己整理的在windows下自动定时同步文件的bat小脚本 (照猫画虎 o(∩_∩)o ) ******************************************************************* @echo off color 02 rem 使用goto和lftp来实现定时自动上传文件到ftp服务器指定目录         ##注释信息 :loop echo.   echo.   echo =================================