文档章节

expect实现配置机器信任关系

1987times
 1987times
发布于 2014/06/10 17:50
字数 381
阅读 12
收藏 0
点赞 0
评论 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
广州
程序员
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
SSH 远程执行命令二三事

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

koala bear
01/29
0
0
scp 在脚本中使用输入密码的解决方法

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

xiaoxin
2014/10/11
0
0
分发系统介绍expect脚本远程登录expect脚本远程执行命令 expect脚本传递参数

分发系统介绍 分发系统-expect讲解(也就是一个分发的脚本) 场景: 业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者lnmp,最好还需要吧代码上传到服务器上;但是因为业...

lyy549745
昨天
0
0
Shell项目-分发系统-expect

[toc] 分发系统-expect 一、什么是分发系统? 如今一些比较大的企业,大都使用了负载均衡,而有时因为一些程序要更改,或者有些bug要修改,如果仅是几台server的话,很简单,把已经改好的程序...

Xavi2017
04/27
0
0
Linux运维Expect介绍 Linux云计算学习

  Expect是基于Tcl的相对简单的一个免费的脚本程序工具语言,是一个用来实现自动化交互功能的软件套件。比如SSH、FTP等,这些程序正常情况都需要手工与其交互,而使用Expect就可以模拟人工...

zhouzhou2018
05/22
0
0
使用shell脚本实现自动SSH互信功能

说假设有一个1000台节点的Hadoop集群,要配置节点之间的SSH免密码登录,该如何用shell脚本实现? #!/bin/expect #循环1000台机器的IP地址,生成密钥文件authorizedkeys for ip in {cat ip.li...

八戒_o
2016/03/29
140
0
linux复盘:expect构建文件分发系统

需求:开发人员开发的代码发布到线上环境中(其实后面用到jenkins才是真正的98k) expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令。当然若是使用不带密码的密钥验证同...

历经35天的选择
02/10
13
0
SequoiaDB数据库集群部署

一般在多机环境下部署数据库的集群模式是比较繁琐的,下面我来分享一个如何通过shell脚本的方式简单、方便地部署我们的集群。 首先,我们要给机器配置信任关系,这样我们就无需手动的输入密码...

SequoiaDB2013
2013/09/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

rabbitmq学习记录(六)交换机Exchange-direct

实现功能:一条消息发送给多个消费者 交换机模式:direct 相比于之前的fanout模式,可以进一步的筛选获取消息的消费者。 fanout模式下,只要消费者监听的队列,已经与接收生产者消息的交换机...

人觉非常君
13分钟前
0
0
Java 之 枚举

Java 中声明的枚举类,均是 java.lang.Enum 类的子类,Enun 类中的常用方法有: name() 返回枚举对象名称 ordinal() 返回枚举对象下标 valueOf(Class enumType, String name) 转换枚举对象 ...

绝世武神
22分钟前
0
0
使用爬虫实现代理IP池之放弃篇

啥叫代理IP以及代理IP池 概念上的东西网上搜索一下就好了,这里简单科普一下(大部分会读这篇文章的人,基本是不需要我来科普的),白话说就是能联网并提供代理访问互联网的服务器,它提供的...

一别丶经年
38分钟前
0
0
sqoop导入数据到Base并同步hive与impala

使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 Sqool和Hive、HBase简介 Sqoop Hive HBase 测试Sqoop 使用Sqoop从MySQL导入数据到Hive 使用复杂SQL 调整Hive数据类型 不断更新 ...

hblt-j
今天
0
0
Dart 服务端开发 文件上传

clent端使用angular组件 upload_component.html form id="myForm" method="POST" enctype="multipart/form-data"> <input type="file" name="fileData"> <!-- file field --></form>......

scooplol
今天
0
0
apache和tomcat同时开启,乱码问题

tomcat和apache同时开启,会走apache的转发,执行的是AJP/1.3协议。所以在tomcat的配置文件server中, <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" useBodyEncodingForU......

Kefy
今天
0
0
使用ssh-keygen和ssh-copy-id三步实现SSH无密码登录 和ssh常用命令

ssh-keygen 产生公钥与私钥对. ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home, ~./ssh , 和 ~/.ssh/authorized_keys的权利 第一步...

xtof
今天
0
0
orcale 查询表结构

SELECT t.table_name, t.colUMN_NAME, t.DATA_TYPE || '(' || t.DATA_LENGTH || ')', t1.COMMENTS FROM User_Tab_Cols t, User_Col_Comments t1WHERE t.table_name......

wertwang
今天
0
0
华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大

华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大!华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大! 在华为最新发布的nova 3手机上,抖音通过华为himedia SDK集成了60fps、超级...

华为终端开放实验室
今天
0
0
多 SSH Key 实现同一台服务器部署多 Git 仓库

本文以以下需求为背景,介绍详细的做法: 需在同一台服务器同时部署两个不同的 Github 仓库(对 Bitbucket 等 git 服务同样适用) root 用户可在远程登录 SSH 后附上预期的 SSH Key 进行 gi...

yeahlife
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部