[root@node2 ssh]# cat auto_ssh.sh
#!/usr/bin/expect -f
##########################################
#通过SSH服务将id.pas.pub公钥推送到目标服务器实现免密登陆
#参数:1.system_username
# 2.system_password
# 3.system_hostname
# 4.CommandList [多个命令间;间隔]
#返回值:
# 0 成功
# 1 参数个数不正确
# 2 SSH 服务器服务没有打开
# 3 SSH 用户名密码不正确
# 4 连接SSH服务器超时
##########################################
proc usage {} {
regsub ".*/" $::argv0 "" name
send_user "Usage:\n"
send_user "$name system_username system_password system_hostname CommandList\n"
exit 1
}
if {[llength $argv] !=3} {
usage
} #设置变量值
set timeout 10
set system_username [lindex $argv 0]
set system_password [lindex $argv 1]
set system_hostname [lindex $argv 2]
#检查主机是否可达
spawn ping ${system_hostname} -w 2
expect {
-nocase -re "100% packet loss" {
send_error "Ping ${system_hostname} is unreachable, Please check the IP address.\n"
exit 1
}
}
#超时时间
set timeout 60
set resssh 0
spawn ssh-keygen -t rsa
expect {
"*file in which to save the key*" {
send "\n\r"
send_user "/root/.ssh\r"
exp_continue
"*Overwrite (y/n)*"{
send "n\n\r"
}
}
"*Enter passphrase*" {
send "\n\r"
exp_continue
}
"*Enter same passphrase again*" {
send "\n\r"
exp_continue
}
}
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $system_username@$system_hostname
expect {
#first connect, no public key in ~/.ssh/known_hosts
"Are you sure you want to continue connecting (yes/no)?" {
send "yes\r"
expect "password:"
send "$system_password\r"
}
#already has public key in ~/.ssh/known_hosts
"password:" {
send "$system_password\r"
}
"Now try logging into the machine" {
#it has authorized, do nothing!
}
}
expect eof

expect 批量自动部署ssh 免密登陆的更多相关文章

  1. expect 批量自动部署ssh 免密登陆 之 三

    #!/bin/expect -- ########################################## zhichao.hu #Push the id.pas.pub public k ...

  2. expect 批量自动部署ssh 免密登陆 之 二

    #!/usr/bin/expect -f ########################################## hutu #Push the id.pas.pub public key ...

  3. 批量部署ssh免密登陆

    #!/bin/bash#set -xservers="10.254.192.xx10.254.192.xx10.254.192.xx"passwd="xxxxxxxx&q ...

  4. [提供可行性脚本] RHEL/CentOS 7 多节点SSH免密登陆

    实验说明: 在自动化部署时,会经常SSH别的机器去操作,然而每次的密码认证却很令人烦躁,尤其是很长的密码,因此SSH免密登陆就显得必不可少: 在机器数目很多的时候,使用更过的往往是Ansible分发并 ...

  5. SSH免密登陆配置过程和原理解析

    SSH免密登陆配置过程和原理解析 SSH免密登陆配置过很多次,但是对它的认识只限于配置,对它认证的过程和基本的原理并没有什么认识,最近又看了一下,这里对学习的结果进行记录. 提纲: 1.SSH免密登陆 ...

  6. 使用rsync基于ssh免密登陆进行备份或目录同步

    日常工作中有很多的备份工作,rsync是一个很不错的工具,尝试使用基于ssh免密登陆的方式进行备份,测试成功,是可行且方便的方法,撰文记之,以备后用: 1.A主机root用户对B主机root用户做ss ...

  7. SSH免密登陆原理及实现

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.SSH简介 SSH(Secure Shell)是一种通信加密协议,加密算法包括:RSA.DSA等. RSA:非对称加密算法,其安全性基于极其困难 ...

  8. ssh免密登陆:sshpass -p [passwd] ssh -p [port] root@192.168.X.X

    正文: ssh免密登陆:sshpass -p [passwd] ssh -p [port] root@192.168.X.X

  9. ssh免密登陆配置

    目录 ssh免密登陆 在A工作站上输入 B服务器上输入 登陆 ssh初次登陆询问 1.单次取消 2.ansible中增加链接参数 3.修改ansible配置参数[推荐] 4.修改服务器上的ssh_co ...

随机推荐

  1. html中滚动小球的demo

    类似于下图的效果: 代码: <!DOCTYPE html> <html> <head> <title>Promise animation</tit ...

  2. IntelliJ IDEA2017 激活方法 最新的激活注册方式方法,破解,密钥

    IntelliJ IDEA2017 激活方法(亲测可用): 搭建自己的授权服务器,对大佬来说也很简单,我作为菜鸟就不说了,网上有教程. 我主要说第二种,现在,直接写入注册码,是不能成功激活的(如果你成 ...

  3. springdata 一对多配置

  4. SPFA求最短路——Bellman-Ford算法的优化

    SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环.SPFA 最坏情况下复杂度和朴素 Bellman-Ford 相同,为 O(VE), ...

  5. 【CF1063D】Candies for Children 数学

    题目大意 有 \(n\) 个人排成一个圈,你有 \(k\) 颗糖,你要从第 \(l\) 个人开始发糖,直到第 \(r\) 个人拿走最后一颗糖.注意这 \(n\) 个人拍成了一个圈,所以第 \(n\) ...

  6. git常用命令介绍

    一,仓库 1. git init    把当前目录变成git可管理得仓库,也就是初始化仓库 2. git add 文件名            在仓库中添加新文件 3. git commit -m & ...

  7. (十六)qt-udp,组播

    基本流程 简单聊天程序 #include "server.h" #include <QApplication> #include "client.h" ...

  8. 理解vue 修饰符sync

    也是在vux中看到了这个sync 现在我们来看看vue中的sync 我们先看下官方文档:vue .sync 修饰符,里面说vue .sync 修饰符以前存在于vue1.0版本里,但是在在 2.0 中移 ...

  9. python第十二天, 三元表达式, 函数对象,名称空间与作用域,函数的嵌套定义

    复习 1. 字符串的比较: 2. 函数的参数:形参与实参 3. 实参的分类:位置实参与关键字实参 4. 形参分类: 1.无值位置形参 2.有值位置形参 3.可变长位置形参 4.有无值关键字形参 5.可 ...

  10. C++ STL的一些操作

    priority_queue 最常用的当然是在dij的时候. #include <queue> struct node { int x, dis; bool operator < ( ...