#####################################################
本文内容来自《老男孩linux运维实战培训》学生—何旭东
如有转载,请务必保留本文链接及本内容版权信息。
欢迎广大运维同仁一起交流linux/unix网站运维技术!
QQ:345078833
E-mail:[email protected]
#####################################################
老男孩linux运维实战培训中心
培训咨询:QQ:80042789 70271111
培训电话:18600338340 18911718229
老男孩老师 QQ:49000448 31333741
网站地址:http://www.etiantian.org
老男孩博客:http://oldboy.blog.51cto.com
老男孩交流群 246054962208160987 226199307 44246017
网站运维交流群:114580181 45039636 37081784
#####################################################
2015-03-26 去蓝讯 chinacache 面试系统工程师,技术上是有一定的落差的。发现每次去大公司面试结束后,都会指点出你的不足以及鼓励你让你努力 加油,毕竟在技术的道路没有顶尖,只有不断向顶点冲击的心。
今天说一说expect 非交互式语言。再说这门语言的时候,首先我的目的是对N台机器进行批量部署 批量执行脚本.
1 先确定分发机器,在机器上 安装 :yum -y install expect
2 干货,直接发命令
expect .ssh/id_dsa.pub 192.168.1.21<?xml:namespace prefix="o" ns="urn:schemas-microsoft-com:office:office">
?xml:namespace>
[[email protected] ~]$ cat fenfa_sshkey.exp
#!/usr/bin/expect
if { $argc != 2 } {
send_user "usage: expect fenfa_sshkey.exp file host\n"
exit
}
#define var
set file [lindex $argv 0]
set host [lindex $argv 1]
set password "123456"
spawn ssh-copy-id -i $file "-p 52113 [email protected]$host"
expect {
"yes/no" {send "yes\r";exp_continue}
"*password" {send "$password\r"}
}
expect eof
exit -onexit {
send_user "Oldboy say good bye to you!\n"
}
小结:
Expect需要用expect 命令执行,或者.执行。Sh不能执行。
$argv 0 是第一个参数 $argv 1 是第二个参数
[[email protected] ~]$ cat fenfa_sshkey.sh
#!/bin/sh
. /etc/init.d/functions
for ip in `cat iplist`
do
expect fenfa_sshkey.exp ~/.ssh/id_dsa.pub $ip
if [ $? -eq 0 ];then
action "$ip" /bin/true
else
action "$ip" /bin/false
fi
done
[[email protected] ~]$ cat iplist
192.168.74.128
192.168.74.130
小结:
执行fenfa_sshkey.sh看目标authorized_keys 是否已经有key文件。
3 执行./fenfa_sshkey.sh
文件,调用 fenfa_sshkey.exp 脚本
4 如遇故障,发生缓慢等情况:
81 GSSAPIAuthentication no
84 GSSAPIStrictAcceptorCheck no
122 UseDNS no
在/etc/hosts 把主机名加上。
测试连接慢: ssh -v [email protected]
要想到~~~用命令,找命令去测试!!! 关键是思想,我当时发生连接慢,查找了2天。
以后我会多多努力,多多总结。