1.建立一个ip,端口,用户,密码列表

  1. [root@localhost shell-key]# cat arg_list.txt
  2. 172.16.56.237 clouds root 172.16.56.215
  3. 172.16.56.53 clouds root 172.16.56.215
  4. 172.16.56.215 clouds root 172.16.56.215
  5. [root@localhost shell-key]#

2.建立expect交互交脚本:

  1. [root@localhost shell-key]# cat expect_run_config.exp
  2. #!/usr/bin/expect -f
  3. set ip [lindex $argv ]
  4. set passwd [lindex $argv ]
  5. set username [lindex $argv ]
  6. set port [lindex $argv ]
  7. set localip [lindex $argv ]
  8. set ssh_file [lindex $argv ]
  9.  
  10. set remo_ip [lindex $argv ]
  11. set key_name [lindex $argv ]
  12. set timeout
  13.  
  14. #
  15. #create the key in the every node
  16. #生成公共密钥
  17.  
  18. spawn ssh $username@$ip
  19. expect {
  20. "*yes/no" { send "yes\r"; exp_continue}
  21. "*password:" { send "$passwd\r" }
  22. }
  23.  
  24. expect "*#\n"
  25. send "rm -fr /root/.ssh\r"
  26. send "mkdir /root/.ssh\r"
  27. send "chmod 700 /root/.ssh\r"
  28. send "cd /root/.ssh\r"
  29. send "ssh-keygen\r"
  30.  
  31. expect "*_rsa):"
  32. send "\r"
  33. expect "*ase):"
  34. send "\r"
  35. expect "*again:"
  36. send "\r"
  37.  
  38. expect "#\n"
  39. send "exit\r"
  40. expect eof
  41.  
  42. spawn ssh $username@$remo_ip
  43.  
  44. expect {
  45. "*yes/no" { send "yes\r"; exp_continue}
  46. "*password:" { send "$passwd\r" }
  47. }
  48.  
  49. expect "*#\n"
  50. send "scp /root/.ssh/id_rsa.pub $username@$localip:/root/shell-key/pub_key/$key_name\r"
  51. expect "*(yes/no)?"
  52. send "yes\r"
  53.  
  54. expect "*password: \n"
  55. send "$passwd\r"
  56.  
  57. #expect "*password:\n"
  58. #send "$passwd\r"
  59.  
  60. expect "*#\n"
  61. send "exit\r"
  62. expect eof
  63.  
  64. [root@localhost shell-key]#

3.建立一个shell循环脚本:

  1. [root@localhost shell-key]# cat loop-out.sh
  2. #!/bin/sh
  3. #loop_sh.sh
  4. echo "########******loding*******#########"
  5. rm -fr /root/shell-key/pub_key/*
  6. rm -fr /root/shell-key/hello.txt
  7.  
  8. while read line
  9. do
  10. echo $line >> hello.txt
  11. done < arg_list.txt
  12. sleep 3
  13.  
  14. rm -fr /root/shell-key/exp_list.txt
  15.  
  16. while read sl
  17. do
  18. echo $sl | sed "s/$/ ${RANDOM}.key/" >> exp_list.txt
  19. done < hello.txt
  20.  
  21. sleep 3
  22.  
  23. while read list
  24. do
  25. echo $list | awk '{print $1}'
  26. rem_ip=$(echo $list | awk '{print $1}')
  27. rem_keyname=$(echo $list | awk '{print $6}')
  28. ./expect_run_config.exp $list $rem_ip $rem_keyname
  29. done < exp_list.txt
  30.  
  31. cat /root/shell-key/pub_key/* > /root/.ssh/authorized_keys
  32.  
  33. if [ $? -eq 0 ];then
  34. echo "******************************************"
  35. echo "Congratulations, you create a public key *"
  36. echo "******************************************"
  37. else
  38. echo "Please check_your script $0 and expect config! "
  39. echo "Good luck !"
  40. fi
  41. [root@localhost shell-key]#

4.执行脚本:

  1. [root@localhost shell-key]# ./loop-out.sh

遍地是高手,我是菜鸟中的菜鸟,不喜勿喷!!!

ssh互信自动化脚本(待更新)的更多相关文章

  1. 纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例

    查看完整文章点击原文链接:纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例 你是否还在用postman\jmeter做接口自动化吗?用python的开源框架[unit ...

  2. 20181225-Linux Shell Bash环境下自动化创建ssh互信脚本

    20181225-Linux Shell Bash环境下自动化创建ssh互信脚本 1. 我的Blog 博客园 https://www.cnblogs.com/piggybaba/ 个人网站 http: ...

  3. 批量配置SSH互信脚本

    在大规模自动化部署时我们常常需要配置好服务器的SSH互信,以便自动化脚本可以免密登录远程服务器,常规的手动配置SSH互信步骤如下: 使用ssh-keygen生成本地ssh key(mha01),生成的 ...

  4. Ansible批量更新远程主机用户密码 (包括Ansible批量做ssh互信)

    按照集团运维信息安全制度, 需要每个一段时间对线上服务器密码进行一次变更,通过shell脚本部署比较繁琐,所以决定采用ansible脚本对远程主机root密码进行批量重置,该脚本已经在稳定运行在正式环 ...

  5. ezdpl:完全依赖脚本和ssh的自动化部署方案

    ezdpl是easy deployment的简写,使用简单的ssh和shell脚本来部署.升级.回滚和重新配置linux服务器. 重要提示:警告:这个项目还处于测试过程中,请仔细阅读说明,并且自己承担 ...

  6. Linux快速配置集群ssh互信

    之前在<记录一则Linux SSH的互信配置过程>.<Vertica 7.1安装最佳实践(RHEL6.4)>中,都分别提到了配置ssh互信的方法,本文在此基础上进一步整理配置s ...

  7. linux配置ssh互信

    公钥认证的基本思想: 对信息的加密和解密采用不同的key,这对key分别称作private key和public key,其中,public key存放在欲登录的服务器上,而private key为特 ...

  8. Salt自动化之自动更新Gitfs-爱折腾技术网

    Salt自动化之自动更新Gitfs-爱折腾技术网 pygit2

  9. 制作ssh互信的docker镜像

    Dockerfile FROM ubuntu:16.04 # package RUN apt-get update; apt-get -y install ssh COPY ssh_config /e ...

随机推荐

  1. 编写适合windows 7 平台的软件,给程序添加UAC认证

    Delphi程序必须在资源里面嵌入MANIFEST信息 一. 首先编辑一个文件,内容如下: <?xml version="1.0" encoding="UTF-8& ...

  2. 一个简单的web服务器例子

    一个简单的web容器小例子,功能十分简单,只能访问静态资源,对于新手来说还是有一定的意义.主要分三个类 1.server类:主要功能开启socketServer,阻塞server,接收socket访问 ...

  3. 使用Eclipse把java文件打包成jar 含有第三方jar库的jar包

    使用Eclipse把java文件打包成jar 含有第三方jar库的jar包   网上打包说用eclipse安装fat jar插件,但是貌似现在都不能用了,所以我只能按照eclipse自带的方法打包了. ...

  4. 菜鸟日记之JSP1

                             JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它 是由Sun Microsyste ...

  5. 利用c++操作XML,主要是内部循环方法的使用

    本文主要分享的是循环方法的使用,设置XML节点属性,用了3种循环方法. XML文件: <?xml version='1.0' encoding='utf-8' ?><root> ...

  6. 转 C#开发微信门户及应用(1)--开始使用微信接口

    微信应用如火如荼,很多公司都希望搭上信息快车,这个是一个商机,也是一个技术的方向,因此,有空研究下.学习下微信的相关开发,也就成为日常计划的重要事情之一了.本系列文章希望从一个循序渐进的角度上,全面介 ...

  7. http与https差异

    HTTPS和HTTP的区别: https协议需要到ca申请证书,一般免费证书很少,需要交费. http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议 http的连接很 ...

  8. 安装指南【win10下安装fedora】

    系统安装 安装准备 系统:fedora .Win 10 硬件:U盘一枚.PC一台 软件:UltraISO 安装步骤 使用UltraISO将镜像写入U盘 window10使用磁盘管理,空出一个未分配的区 ...

  9. 12个Icon图标资源网站

    1.除了Icon以外,还有很多不错的UI设计素材. 地址:http://worldui.com/2.除了免费Icon资源下载以外,还提供Icon定制的付费服务.地址:http://dryicons.c ...

  10. python 简单谈谈“类”

    文章出处:http://www.cnblogs.com/winstic/,请保留此连接 面向对象是python语言的一大特色,而类又是面向对象编程的核心 先来一段关于类的声明: class myCla ...