文档章节

expect实现配置机器信任关系

1987times
 1987times
发布于 2014/06/10 17:50
字数 381
阅读 13
收藏 0
#!/bin/sh
expect_ssh_copy_id()
{
  if [ "$#" -ne "5" ]; then
     echo "expect_ssh_copy_id <remoteUser> <remoteHostname> <password> <localUserhome> <timeout>";
     exit 1;
  fi
  local remoteUser=$1
  local remoteHostname=$2
  local password=$3
  local localUserhome=$4
  local timeout=$5
  
  expect -c "
    set timeout $timeout 
    spawn ssh-copy-id -i $localUserhome/.ssh/id_rsa.pub $remoteUser@$remoteHostname
    expect {
      \"*yes/no\" { send \"yes\r\"; exp_continue }
      \"*assword:\" { send \"$password\r\" }
    } 
    expect eof
  "
}
expect_ssh_keygen()
{
  if [ "$#" -ne "2" ]; then
     echo "expect_ssh_keygen <localUserhome> <timeout>";
     exit 1;
  fi
  local localUserhome=$1;
  local timeout=$2;
  if [ -f ${localUserhome}/.ssh/id_rsa.pub -a -f ${localUserhome}/.ssh/id_rsa ] ; then
     echo "$(remoteHostname) is already create id_rsa.pub and id_rsa"
  else
     echo "$(remoteHostname) is not set id_rsa.pub and id_rsa.pub"
     expect -c "
       set timeout $timeout
       spawn ssh-keygen
       expect {
        \"*save the key*id_rsa*\" {send \"\r\"; exp_continue }
        \"*verwrite*y/n*\" { send \"y\r\"; exp_continue }
        \"*passphrase*passphrase*\" { send \"\r\"; exp_continue }
        \"*same passphrase*\" {send \"\r\" }
       }
       expect eof
       exit 0
     "
     if [ "$?" -eq "0" ] ; then 
       echo "create id_rsa.pub,id_rsa successfully"
     else
       echo "create id_rsa.pub,id_rsa faild"
     fi
  fi
}
configure_trust_relation()
{
  if [ "$#" -ne "5" ]; then 
     echo "configure_trust_relation <remoteUser> <remoteHostname> <password> <localUserhome> <timeout>";
     exit 1;
  fi
  local remoteUser=$1
  local remoteHostname=$2
  local password=$3
  local localUserhome=$4
  local timeout=$5
  expect -c "
   
    set timeout $timeout 
    set trust true
    #
    # checking remote machine is be trusted
    # if trust, return 0
    # if not trust, return 1
    #
    spawn ssh $remoteUser@$remoteHostname
    expect {
      \"*yes/no\" { send \"yes\r\" ; exp_continue }
      \"*assword:\" { send \"$password\r\" ; set trust false }
    } 
  
    expect { *\$* }
    
    send \"exit\r\"
    sleep 1
    if { \"\$trust\" == \"false\"} {
      expect eof
      exit 1
    }
    expect eof
    exit 0
  "
  if [ "$?" -ne "0" ] ; then
    echo "machine is not be trusted, then exec ssh-copy-id to remote machine"
    expect_ssh_keygen $localUserhome $timeout
    expect_ssh_copy_id $remoteUser $remoteHostname $password $localUserhome $timeout
  else
    echo "remote machine is be trusted"
  fi
}
main()
{
  which expect
  if [ "$?" -ne "0" ]; then
    echo "expect is not exists"
    exit 1;
  fi
  remoteUser=chen;
  remoteHostname=localhost;
  password=chen;
  localUserhome=$(cd ~;pwd;);
  timeout=5;
  configure_trust_relation $remoteUser $remoteHostname $password $localUserhome $timeout
}
main

本文转载自:http://www.cnblogs.com/chenfool/p/3762537.html

共有 人打赏支持
1987times
粉丝 3
博文 57
码字总数 17894
作品 0
广州
程序员
批量实现多台服务器之间ssh无密码登录的相互信任关系

博客园 首页 新随笔 联系 管理 订阅 随笔- 486 文章- 0 评论- 366 批量实现多台服务器之间ssh无密码登录的相互信任关系 最近IDC上架了一批hadoop大数据业务服务器,由于集群环境需要在这些服...

Mr_Tea伯奕
07/25
0
0
linux系统之间文件传输

linux之间文件传输(转)linux的scp命令 linux 的 scp 命令 可以 在 linux 之间复制 文件 和 目录; scp 命令 scp 可以在 2个 linux 主机间复制文件; 命令基本格式: 从 本地 复制到 远程 复制...

yiqifendou
2016/12/02
16
0
ssh建立信任关系注意权限问题

先说一下如何建立信任关系。假设有两台机器A和B,现建立A与B的信任关系(这里指A信任B): 1. 登录到B的$HOME目录下,执行下面的命令: cd .ssh ssh-keygen -t dsa(对于提示信息一律回车) ...

考拉睡
2013/07/26
0
0
scp 在脚本中使用输入密码的解决方法

以前用脚本scp文件时,都是以.ssh打通为基础的。 但是在脚本中使用scp在机器之间拷贝文件,输入密码成为问题。 第一种方法,用到了expect。 脚本如下: #! /usr/bin/expect -f spawn scp 1 ...

xiaoxin
2014/10/11
0
0
SSH 远程执行命令二三事

原文出处:koala bear 有时侯,利用 ssh 在本地执行远程机器的命令可以便捷地处理某些重复工作。我们希望做到: 免手工输入密码 支持执行多个命令,执行 shell 脚本 支持执行 sudo 的命令 免...

koala bear
01/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
27分钟前
1
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
50分钟前
1
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
52分钟前
1
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
2
0
20180921 su与sudo命令、限制root用户通过ssh远程登录

su 命令 用户切换。 su # 切换到root用户su username # 切换到username用户# su 后面加-时,会初始化当前用户的各种环境su - username # 指定用户执行某些命令 su - -c "touch /tm...

野雪球
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部