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
阅读(569) | 评论(0) | 转发(0) |