由于zabbix对功能,业务监控比较方便,就用zabbix做监控,zabbix唯一的缺点就是需要在每台服务器上安装客户端,即便是几十台服务器,一台一台做着实繁琐,何况更多,时间紧急,无密码登陆通道还没打通,就准备先打通,再写脚本来安装agentd,就选择了使用except。关于expect语法与使用方法,可以私下交流。

具体脚本如下。

本脚本可以循环服务器ip,完全做到自动化,缺点:服务器密码保持一致。

#!/bin/bash cat >login.exp <<EOF
#!/usr/bin/expect -fset ip  [lindex \$argv 0]
set password *****************set timeout 3
spawn ssh -p60022 admin@\$ip ssh-keygen -t rsa;
expect {"yes/no" {send "yes\r";exp_continue}
}
expect "admin@\$ip's password:"
set timeout 2
send "\$password\r"
set timeout 2
expect "(/home/admin/.ssh/id_rsa):"
send "\r"
expect {"y/n" {send "y\r";exp_continue}
}
expect "(empty for no passphrase):"
send "\r"
expect "Enter same passphrase again:"
send "\r"
set  timeout 10
send "exit\r"
expect eofset timeout 3
spawn ssh -p60022 admin@\$ip cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ;
expect {"yes/no" {send "yes\r";exp_continue}
}
expect "admin@\$ip's password:"
set timeout 3
send "\$password\r"
set timeout 10
send "exit\r"
expect eofset timeout 3
spawn scp -P60022 ~/.ssh/authorized_keys admin@\$ip:~/.ssh/authorized_keys;
expect {"yes/no" {send "yes\r";exp_continue}
}
expect "admin@\$ip's password:"
set timeout 3
send "\$password\r"
set timeout 10
send "exit\r"
expect eof
EOFfor i in `cat iplist`
doexpect login.exp $i
done
说明,iplist 里面写入服务器ip地址即可[root@zabbix admin]# cat iplist
172.16.8.34
172.16.8.35

另一个工具 sshpass 也可以实现无密码访问。

需要编译安装,×××地址 http://sourceforge.net/projects/sshpass/

解压编译安装即可

使用:#从命令行方式传递密码

sshpass -p password ssh root@ip          -p后面直接指定密码

#从文本传递密码

sshpass -f file ssh root@ip   把密钥写到file里即可。

#从环境变量传递

export SSHPASS="user_password"

sshpass -e ssh user_name@192.168..1.2

转载于:https://blog.51cto.com/zhangxylinux/1422735

使用expect 打通到其他服务器无密码访问相关推荐

  1. 多台linux服务器ssh相互无密码访问

    转载:http://blog.csdn.net/educast/article/details/7174498 一.单向无密码访问 单向无密码访问远程服务器操作比较简单,比如服务器A需要无密码访问服务 ...

  2. rsh服务配置主机无密码访问

    rsh的安全性是没有保证的,所有密码均使用明文传输,如果服务器有大量对外服务,建议不要使用此协议 我们在使用CentOS系统时候,安装RAC时,需要配置各个节点的互信关系,使rsh.rlogin.rc ...

  3. Ubuntu下安装rsh实现无密码访问

    一:环境 1.三台服务器ubuntu14.04, 主机名分别为compute,block1和blcok2 2.两台主机hosts文件都为: root@compute:~# cat /etc/hosts ...

  4. 多台linux无密码访问之方法二

    一:实验环境同"多台linux无密码访问之方法一" 二:配置过程 前3步同"多台linux无密码访问之方法一" ★第四步不同于方法一 4.在.ssh目录下创建一 ...

  5. Win2003和Win2008防火墙导致FTP服务器不能访问的解决方法

    这篇文章主要介绍了Win2003和Win2008防火墙导致FTP服务器不能访问的解决方法,需要的朋友可以参考下 由于通过远程访问传文件比较麻烦,就安装了IIS自带的FTP功能,设置好了之后,服务器上可 ...

  6. 前端服务器OWA 访问显示异常最佳解决方案

    EXCHANGE2003环境: 前端服务器:denver     后端服务器:sbs1 出现的问题: 当从一台XP客户端通过OWA进行访问时,如直接通过后端[url]http://sbs1/excha ...

  7. 侏罗纪显示服务器超时,侏罗纪世界进化服务器无法访问解决方案推荐

    部分玩家在登录这款游戏时,会出现.服务器无法访问,连接到互联网并选择"重试"的情况.那么遇到这种情况,我们要怎么解决呢?本文小编会为大家详细介绍,一起来看看吧! 问题描述: 在登录 ...

  8. 服务器应用程序不可用您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷...

    错误提示: 服务器应用程序不可用您试图在此 Web 服务器上访问的 Web 应用程序当前不可用.请点击 Web 浏览器中的"刷新"按钮重试您的请求. 管理员注意事项:详述此特定请求 ...

  9. linux各机器之间配置无密码访问

    2019独角兽企业重金招聘Python工程师标准>>> 1.在机器上生成证书公私钥,分别执行如下命令: ssh-keygen -t dsa -P '' -f ~/.ssh/id_ds ...

最新文章

  1. 尤雨溪创立 Vue.js 的心路历程纪录片
  2. 小米AIoT开发者大会28日召开,雷军的AIoT和小米的这一年
  3. 分模块开发创建父工程——(六)
  4. mysql 设置电脑时间设置_怎样设置mysql密码
  5. ActiveX技术在WEB页上的应用[转载]
  6. 大数据WEB阶段(十九)Threadlocal
  7. dockerclient 查看端口占用_docker 端口被占用问题解决
  8. html表格在页面间距,在CSS中设置单元格和单元格间距?
  9. Android App优化之ANR详解
  10. 7-60 二分查找法之过程 (10 分)
  11. git 更换密码后,pull代码 fatal: Authentication failed for '
  12. Java经典设计模式 总览
  13. c mysql对时间加减_25.2.10. 日期和时间值的C API处理
  14. ArcGis如何插入图片_如何在CAD图纸中以OLE形式插入图片?
  15. 如何查看局域网内所有IP
  16. svchost是什么程序
  17. 2019开发者调查报告出炉
  18. ROS 教程1 机器人操作系统 基础知识 节点 话题 消息 服务 行动 参数 日志 TF变换 目标结构 启动文件
  19. 什么是图片的DPI?如何修改图片DPI值?
  20. 那些在做固态盘SSD的其实在研究这仨东西

热门文章

  1. DHCP网络服务器的实现
  2. Java语言的关键字
  3. django_2.0_请求处理
  4. Android 7.0 出现 ”FileUriExposedException“ 和 ”解析包出现错误“ 异常的解决办法...
  5. SQL Server 审核(Audit)-- 审核组件
  6. Office365从销售说起——企业办公考虑重点
  7. foo、bar、baz三兄弟
  8. 高中数学与计算机程序
  9. (How to)WordPress与Windows Live Writer整合
  10. PostgreSQL学习手册(七) 事物隔离