[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. Java导出压缩包工具类

    /** * @Title: exportZip * @Description:TODO(导出建压缩文件) * @param delAdviceinfo 为项目实体类 * @date 2018年4月4日 ...

  2. C++编程音视频库ffmpeg的pts时间换算方法

    ffmpeg中的pts,dts,duration时间记录都是基于timebase换算,我们主要分析下pts的时间怎么换算,其它的是一样的换算.ffmpeg的时间换算对许多新接触同学算是一个大坑,很多刚 ...

  3. sql stuff函数的语法和作用

    sql stuff函数用于删除指定长度的字符,并可以在制定的起点处插入另一组字符.sql stuff函数中如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长度,将返回空字符串.如果要删除 ...

  4. element vue 表格编辑

    https://xuliangzhan.github.io/vue-element-extends/#/editable/click1

  5. tensorflow-mnist报错[WinError 10060] 由于连接方在一段时间后没有正确答复解决办法

    问题原因: tensorflow提供了tensorflow.exapmles.tutorials.mnist.input_data模块下载mnist数据集.代码如下 如果path路径底下没有mnist ...

  6. win10子系统 (linux for windows)打造python, pytorch开发环境

    一.windows设置 0.启用windows子系统 控制面板--程序--启用或关闭windows功能--勾选适用于linux的Windows子系统 确定后会重启电脑 1.下载Ubuntu 在Micr ...

  7. BZOJ 1815: [Shoi2006]color 有色图(Polya定理)

    题意 如果一张无向完全图(完全图就是任意两个不同的顶点之间有且仅有一条边相连)的每条边都被染成了一种颜色,我们就称这种图为有色图. 如果两张有色图有相同数量的顶点,而且经过某种顶点编号的重排,能够使得 ...

  8. foreach 中获取索引index的方法

    一样,很少用到,记下来先 主要代码: foreach (var item in arr) { int index = arr.indexOf(item); //index 为索引值 }

  9. 使用diff或者vimdiff比较远程文件(夹)与本地文件夹

    方法1:管道给diff $ssh eric@192.168.1.11 "cat ~/remote_file.txt" | diff - ~/local_file.txt 如果 Fi ...

  10. [leetcode] 5.Longest Palindromic Substring-2

    想了很多方法 搞轴对称,算对称轴,偶数都高出了一堆0.5在那加加减减,最后发现在移轴之前可能就返回了. class Solution: def longestPalindrome(self, s: s ...