用expect解决批量Linux集群机器间SSH免密码访问
2014-05-04 20:37
676 查看
转自: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 -1 set host [lrange \$argv 0 0] 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,单向连接既然有了,通过此单向连接,控制其他所有机器运行此脚本即可。
相关文章推荐
- SSH 无密码访问其它机器 和 Windows 上 putty 无密码访问 Linux 机器
- linux 集群配置ssh无密码访问
- scp命令详解,linux两台机器ssh无密码连接
- Linux下apache服务启动,本机访问正常,局域网内其他机器无法访问(已解决)
- Linux:SSH不需要密码的访问
- linux实现两台机器无密码访问
- Linux下用ssh访问另外Linux提示错误WARNING: REMOTE HOST 怎么解决
- 配置linux服务器之间ssh不用密码访问
- 两台linux机器 通过ssh传文件 不需要输入密码
- Linux A机器免密码SSH登录B机器
- [Linux] 解决局域网中其它机器不能访问 RedHat 5.5 + Tomcat 服务器
- linux 上部署 tomcat 其他机器访问不到解决办法
- [添加用户]解决useradd 用户后没有添加用户Home目录的情况,Linux改变文件或目录的访问权限命令,linux修改用户密码
- Linux:实现Hadoop集群Master无密码登录(SSH)各个子节点
- 在windows 用ssh访问linux 提示用户名密码不对,是因为/root/.ssh/目录下少authorized_keys2和id_dsa这两个文件
- linux下设置 git ssh 代理,不需要密码访问osc方法
- ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访问(转)
- 配置linux服务器之间ssh不用密码访问
- linux下ssh无密码登陆不了的解决方法
- Linux下用ssh访问另外Linux提示错误WARNING: REMOTE HOST 怎么解决