zoukankan      html  css  js  c++  java
  • 使用expect登录批量拷贝本地文件到多个目标主机

    1. #!/bin/bash
    2. #
    3. #********************************************************************
    4. #encoding -*-utf8-*-
    5. #Author: zhangshang
    6. #Date: 2017-12-26
    7. #URL: http://blog.vservices.top/myblog
    8. #Description: The test script
    9. #Copyright (C): 2017 All rights reserved
    10. #QQ Numbers: 765030447
    11. #********************************************************************
    12. usage(){
    13. echo '这个脚本是用批量拷贝本地文件到多个远程目标主机的指定目录下。
    14. 需要事先将主机的ip和密码存入该脚本当前目录下的scp_host文件中,如果没有这个文件,请创建。账号密码放在同一行,使用"::"进行分割,例 127.0.0.1::123
    15. 位置参数$1 表示用户名
    16. 位置参数$2 表示本地文件或目录
    17. 位置参数$3 表示远程主机的目录
    18. 三个位置参数缺一不可,执行方式,例:
    19. sh scp_localfiletodist.sh root /etc/fstab /root/'
    20. }
    21. #参数不为3退出脚本
    22. [ $# -ne 3 ] && usage && exit 1
    23. [ `rpm -qa expect | wc -l` -eq 0 ] && { echo "请安装expect脚本的rpm包" ; exit 1; }
    24. #遍历主机和密码文件执行scp操作
    25. for i in `cat ./scp_host`;do
    26. ip=`echo $i | awk -F '::' '{print $1}'`
    27. passwd=`echo $i | awk -F '::' '{print $2}' | tr -d ' '`
    28. #判断传入的参数是否为一个有效的ip地址
    29. [[ "$ip" =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]] || { echo 'please input a valied ip' && echo $ip >>./Invalid.ip && continue; }
    30. count=`ping -c1 $ip | grep '1 received' | wc -l`
    31. #判断主机是否可达
    32. [ "$count" -eq 1 ] && echo -e "到$ip 33[32m主机可达33[0m" || { echo -e "到$ip 33[31m主机不可达33[0m" && echo $ip >>./Unreachable.ip && continue; }
    33. #使用expect脚本,实现免交互式操作
    34. expect <<EOF
    35. spawn scp -r $2 $1@$ip:/$3
    36. expect {
    37. "(yes/no)?" { send "yes ";exp_continue }
    38. "password" { send "$passwd " }
    39. }
    40. expect eof
    41. EOF
    42. done
  • 相关阅读:
    工程思维
    小骆驼 第三章 列表与数组
    小骆驼 第二章 标量数据
    小骆驼 第二章 标量数据
    小骆驼 第二章 标量数据
    split和join合写
    Competition and Predation
    What is the difference between Θ(n) and O(n)?
    数学基础之概率统计
    enumerate()函数
  • 原文地址:https://www.cnblogs.com/momenglin/p/8483121.html
Copyright © 2011-2022 走看看