ssh互信自动化脚本(待更新)
1.建立一个ip,端口,用户,密码列表
[root@localhost shell-key]# cat arg_list.txt
172.16.56.237 clouds root 172.16.56.215
172.16.56.53 clouds root 172.16.56.215
172.16.56.215 clouds root 172.16.56.215
[root@localhost shell-key]#
2.建立expect交互交脚本:
[root@localhost shell-key]# cat expect_run_config.exp
#!/usr/bin/expect -f
set ip [lindex $argv ]
set passwd [lindex $argv ]
set username [lindex $argv ]
set port [lindex $argv ]
set localip [lindex $argv ]
set ssh_file [lindex $argv ] set remo_ip [lindex $argv ]
set key_name [lindex $argv ]
set timeout #
#create the key in the every node
#生成公共密钥 spawn ssh $username@$ip
expect {
"*yes/no" { send "yes\r"; exp_continue}
"*password:" { send "$passwd\r" }
} expect "*#\n"
send "rm -fr /root/.ssh\r"
send "mkdir /root/.ssh\r"
send "chmod 700 /root/.ssh\r"
send "cd /root/.ssh\r"
send "ssh-keygen\r" expect "*_rsa):"
send "\r"
expect "*ase):"
send "\r"
expect "*again:"
send "\r" expect "#\n"
send "exit\r"
expect eof spawn ssh $username@$remo_ip expect {
"*yes/no" { send "yes\r"; exp_continue}
"*password:" { send "$passwd\r" }
} expect "*#\n"
send "scp /root/.ssh/id_rsa.pub $username@$localip:/root/shell-key/pub_key/$key_name\r"
expect "*(yes/no)?"
send "yes\r" expect "*password: \n"
send "$passwd\r" #expect "*password:\n"
#send "$passwd\r" expect "*#\n"
send "exit\r"
expect eof [root@localhost shell-key]#
3.建立一个shell循环脚本:
[root@localhost shell-key]# cat loop-out.sh
#!/bin/sh
#loop_sh.sh
echo "########******loding*******#########"
rm -fr /root/shell-key/pub_key/*
rm -fr /root/shell-key/hello.txt while read line
do
echo $line >> hello.txt
done < arg_list.txt
sleep 3 rm -fr /root/shell-key/exp_list.txt while read sl
do
echo $sl | sed "s/$/ ${RANDOM}.key/" >> exp_list.txt
done < hello.txt sleep 3 while read list
do
echo $list | awk '{print $1}'
rem_ip=$(echo $list | awk '{print $1}')
rem_keyname=$(echo $list | awk '{print $6}')
./expect_run_config.exp $list $rem_ip $rem_keyname
done < exp_list.txt cat /root/shell-key/pub_key/* > /root/.ssh/authorized_keys if [ $? -eq 0 ];then
echo "******************************************"
echo "Congratulations, you create a public key *"
echo "******************************************"
else
echo "Please check_your script $0 and expect config! "
echo "Good luck !"
fi
[root@localhost shell-key]#
4.执行脚本:
[root@localhost shell-key]# ./loop-out.sh
遍地是高手,我是菜鸟中的菜鸟,不喜勿喷!!!
ssh互信自动化脚本(待更新)的更多相关文章
- 纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例
查看完整文章点击原文链接:纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例 你是否还在用postman\jmeter做接口自动化吗?用python的开源框架[unit ...
- 20181225-Linux Shell Bash环境下自动化创建ssh互信脚本
20181225-Linux Shell Bash环境下自动化创建ssh互信脚本 1. 我的Blog 博客园 https://www.cnblogs.com/piggybaba/ 个人网站 http: ...
- 批量配置SSH互信脚本
在大规模自动化部署时我们常常需要配置好服务器的SSH互信,以便自动化脚本可以免密登录远程服务器,常规的手动配置SSH互信步骤如下: 使用ssh-keygen生成本地ssh key(mha01),生成的 ...
- Ansible批量更新远程主机用户密码 (包括Ansible批量做ssh互信)
按照集团运维信息安全制度, 需要每个一段时间对线上服务器密码进行一次变更,通过shell脚本部署比较繁琐,所以决定采用ansible脚本对远程主机root密码进行批量重置,该脚本已经在稳定运行在正式环 ...
- ezdpl:完全依赖脚本和ssh的自动化部署方案
ezdpl是easy deployment的简写,使用简单的ssh和shell脚本来部署.升级.回滚和重新配置linux服务器. 重要提示:警告:这个项目还处于测试过程中,请仔细阅读说明,并且自己承担 ...
- Linux快速配置集群ssh互信
之前在<记录一则Linux SSH的互信配置过程>.<Vertica 7.1安装最佳实践(RHEL6.4)>中,都分别提到了配置ssh互信的方法,本文在此基础上进一步整理配置s ...
- linux配置ssh互信
公钥认证的基本思想: 对信息的加密和解密采用不同的key,这对key分别称作private key和public key,其中,public key存放在欲登录的服务器上,而private key为特 ...
- Salt自动化之自动更新Gitfs-爱折腾技术网
Salt自动化之自动更新Gitfs-爱折腾技术网 pygit2
- 制作ssh互信的docker镜像
Dockerfile FROM ubuntu:16.04 # package RUN apt-get update; apt-get -y install ssh COPY ssh_config /e ...
随机推荐
- c语言学习之基础知识点介绍(九):预处理指令和多文件开发
一:预处理指令 /* 预处理指令: 作用:在程序编译之前做一些操作. 预处理命令写法的共同特点:都是以#号开头. 文件包含指令:#include 是一个文件包含命令. 作用:把某个文件内的内容读取出来 ...
- 关于基于.net的WEB程序开发所需要的一些技术归纳
前提: 最近公司里有一个同事,年龄比我大几岁,但是由于是转行来做开发的,许多的关于.net开发技术不是很入行,所以总是会问我一些东西,基于自己以前的一些 经验,总是会愿意给他讲一些总结性的东西,希望他 ...
- java中事件处理探究
事件的触发可以源于用户,也可以用代码来主动设置事件的发生.如setSelected()java.awt.event中 听众接口 事件类 适配器类 ComponentListener Conta ...
- CSS 分组 和 嵌套 选择器
Grouping Selectors 在样式表中有很多具有相同样式的元素. h1{color:green;}h2{color:green;}p{color:green;} 为了尽量减少代码,你可以使用 ...
- HDU1862EXCEL排序
其实最近都没有兴趣做排序题目,因为我觉得纯粹排序对我而言进步不大,但是舍友TLE了,叫我试一试. 整道题的思路很简单啦,我用的是快排,比较的原则也给得很清楚,不必多言,我没有用stdlib的快排,也没 ...
- Visual Studio 2008中添加运行按钮 转载
在Visual Studio 2008中添加运行按钮 默认情况下,VS2008中的工具栏上没有运行按钮,只有调试(Debug)按钮,可按照以下方法添加 1.点击菜单Tools(工具)->Cust ...
- C#应用程序中读取Oracle数据库
前言 最近的任务就是开发了一个功能,要从供应商那边读取数据,然后拿过来,处理以后放到我们自己的数据库中.供应商那边是Oracle数据库,其实不管什么数据我想都差不多,于是我就开始了.由于在家里写的博客 ...
- ext 扩展控件—moneyField
/** *数字控件 *带大写提示,和千分位 **/ Ext.define(appNameSpace+'.utils.MoneyField', { extend : 'Ext.form.field.Te ...
- favicon.ico的使用方法
favicon.ico怎么来,就自己决定了. 虽说是放在网站根目录下就行了, 但最好是放在网站images目录下,方便统一管理. 然后在head.tpl.php 中的<head></ ...
- python中os模块的常用接口和异常中Exception的运用
1.os.path.join(arg1, arg2) 将arg1和arg2对应的字符串连接起来并返回连接后的字符串,如果arg1.arg2为变量,就先将arg1.arg2转换为字符串后再进行连接. 2 ...