• 使用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
  • 相关阅读:
    校内题目T2695 桶哥的问题——吃桶
    一位大佬对学习哲理的思考
    P2845 [USACO15DEC]Switching on the Lights 开关灯
    CF911F Tree Destruction
    CF995C Leaving the Bar
    CF997B Roman Digits
    P1667 数列
    P4035 [JSOI2008]球形空间产生器
    P2679 子串
    P2613 【模板】有理数取余
  • 原文地址:https://www.cnblogs.com/momenglin/p/8483121.html
Copyright © 2020-2023  润新知