转自:http://blog.csdn.net/aichaoguy/article/details/11693269
#!/bin/bash #check whether package 'expect' is installed.
if rpm -q expect
then echo "Good">/dev/null
else echo "You Must install package \'expect\'"; exit 0
fi #开始产生exp文件
cat >/tmp/auto.tcl<<eof #!/usr/bin/expect -f
set timeout -
set host [lrange \$argv ] spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@\$host
expect "*connecting*"
send "yes\r"
expect "*?assword:"
send "12341234\r"
expect eof
eof chmod 755 /tmp/auto.tcl rm -f /root/.ssh/known_hosts
for hostname in `cat cluster`; do
expect -f /tmp/auto.tcl $hostname;
echo "********$hostname*********">> ssh_copy_id.log;
done

很好的解决了新装Linux机器互相之间需要设置SSH无密码访问(ssh-copy-id)的问题(前提是已经用ssh-keygen产生了公钥私钥)。

这只是expect的一个应用,除此之外,exp也可以用在很多需要机器代替人为交互的地方。

用法:

1,得到所有机器的IP地址(这是必须),最好拿到机器名与IP地址的对应(至少应该有一台机器的hosts有)。

2,如果都是IP地址,那就用IP地址好了,一行一个IP存到一个文件里面,就是代码中的 cluster文件;然后从任一机器处,执行此脚本,执行完毕时得到了该机器与所有机器的单项连接。

3,单向连接既然有了,通过此单向连接,控制其他所有机器运行此脚本即可。

最新文章

  1. [LeetCode] Design Phone Directory 设计电话目录
  2. 第七届山东省ACM省赛
  3. [转]Oracle数据库ASH和AWR的简单介绍
  4. Nginx 开启PATHINFO支持ThinkPHP框架实例
  5. 阿里云服务器mysql修改编码问题
  6. 选择&mdash;&mdash;ERP信息系统选型
  7. 关于使用X-UA-Compatible来设置IE浏览器兼容模式
  8. springBoot系列教程03:redis的集成及使用
  9. 《深入理解mybatis原理》 MyBatis的架构设计以及实例分析
  10. CocosCraetor中图像资源Texture和SpriteFrame的区别
  11. Spring中@Transactional(rollbackFor = Exception.class)的作用
  12. Hive表种map字段的查询取用
  13. OS与Internet
  14. CentOS6.5搭建OpenVas完全搭建手册(搭建过程总结及小记)
  15. redis安全删key脚本(模糊匹配,长list,大set等)
  16. centos下查看端口占用情况,杀死进程
  17. EasyUI datagrid 格式 二
  18. APP接口
  19. select poll epoll Linux高并发网络编程模型
  20. gitlab之邮箱配置

热门文章

  1. 2018.09.02 Atcoder Regular Contest 102简要题解
  2. 2018.07.06 BZOJ1208: HNOI2004宠物收养所(非旋treap)
  3. LDA汇总
  4. MATLAB矩阵的一些用法
  5. 12) maven-compiler-plugin
  6. Android中Activity启动过程探究
  7. office2010安装不成功提示缺少MSXML 6.10.1129.0?
  8. 挂载镜像SD卡的FAT32文件系统分区到Linux中
  9. Jack Clark 的几句名言
  10. vs web项目远程发布到IIS