Chinaunix首页 | 论坛 | 博客
  • 博客访问: 298409
  • 博文数量: 240
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-04 18:14
文章分类

全部博文(240)

文章存档

2017年(8)

2014年(4)

2013年(15)

2012年(4)

2011年(14)

2010年(55)

2009年(140)

我的朋友

分类: LINUX

2009-07-11 16:30:33

 
 
  • Expect 是一种特定的、高级的和通用的编程语言,其语法与 Tcl 相同,并增加了 Tcl 中所没有的一些特殊用途的命令。
  • Expect 是一种可执行程序,从它正确地处理用 Expect 语言编写的输入的角度来看,它实现了这种语言。
  • expect 命令是其中的一个命令,Expect 以此对 Tcl 进行了扩展。
  • Expect 是一个 Tcl 包。一般说来,这意味着任何 Tcl 应用程序都可以在运行时加载 Expect 功能。
  • Expect 是一个基于 C 源代码的库,而这些 C 源代码则深入到 Expect 可加载的包和 Expect 可执行程序。
  • Expect 是某种工具的抽象概念,该工具:
    • 实现终端交互的自动化,甚至在涉及到密码或者其他特殊项目的情况下
    • 实现了一种“对话”模型,通过它对消息和响应的简单规律进行编码

     

    写出做密钥的一个shell脚本看看具体应用格式:

    #!/bin/sh
    # This script could make root key for linux server.
    # Usage:./mk-key.sh RemothostIP
    # For This: The server which excut the script could ssh Remothost for corectly.

    rm -rf /root/.ssh
    expect -c'
    spawn ssh-keygen -t dsa -f /root/.ssh/id_dsa
    expect "Enter passphrase (empty for no passphrase): "
    send "\n"
    expect "Enter same passphrase again: "
    send "\n"
    expect'
    &>/dev/null

    mkdir /root/keyfile/.ssh -p
    cp /root/.ssh/id_dsa.pub /root/keyfile/.ssh/authorized_keys

    expect -c"
    spawn scp -r keyfile/.ssh $1:/root
    # expect \"Are you sure you want to continue connecting (yes/no)? \"
    # send \"yes\n\"
    expect \"password: \"
    send \"123456\n\"
    expect"
    &>/dev/null

    ssh $1 "chown root.root /root/.ssh -R && chmod 700 /root/.ssh -R && chmod 644 /root/.ssh/authorized_keys"
    echo -en "$1\t" && ssh $1 hostname

    echo "User root make key successful!"

     

    应用:在 192.168.0.10 上执行 ./mk-key.sh 192.168.0.20 命令,192.168.0.10 就可以直接连接 192.168.0.20 了,不需要输入密码!

    Eg: for i in `cat /etc/hosts|egrep -v '^#|127'|awk '{print $1}'`;do sh aa.sh $i;done

     

  • 阅读(540) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~