热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

shell脚本无密码登录expect的使用方法详解

这篇文章主要介绍了shell脚本无密码登录expect的使用方法详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

shell脚本无密码登录 expect的使用方法详解

今天需要做一个定时任务脚本将最新的数据包文件传到远程的服务器上,虽然有密钥但也是要求输入密码的那种,所以只能另想办法实现让脚本自动输入密码了。

从网上查到使用expect可以,简单研究了一下,效果不错。 

因为我的操作系统没有安装expect,所以直接"yum -y install expect",你可以根据你的操作系统安装expect,或者源码编译。
安装好之后就可以使用了,这里有几种方法:

一、单独写一个脚本

如 auto_scp.sh:

#!/usr/bin/expect 
#使用第一个参数 
set server_ip [lindex $argv 0] 
#后面的也可以用参数[lindex $argv n] 
set server_port 22 
set server_dir /home/test
set server_user test
set server_pswd test
set scp_file auto_scp.sh 
                                               
# 设置超时时间 
set timeout 60 
spawn scp -P $server_port $scp_file $server_user@$server_ip:$server_dir 
expect { 
    "passphrase"
    { 
      send "$server_pswd\n"; 
    } 
    "password"
    { 
       send "$server_pswd\n"; 
    } 
    "yes/no"
    { 
       send "yes\n"; 
       exp_continue; 
    } 
} 
expect eof

我这里的变量都是随意设置的,你可以根据你的情况进行选择,保存退出之后,对该文件加上可执行权限,运行
"./auto_scp.sh 2.2.2.2"就可以了,"2.2.2.2"就是传入的第一参数。

"passphrase"和"password"等就是要监测的输入提示的一部分,send "$server_pswd\n"就是要执行的命令。

二、在脚本中使用----我比较喜欢这个

我这里使用的是Here document方法。

...... 
...... 
expect <

变量都是我从配置文件中获取的,这里不再赘述了。

三、在脚本中使用

也是在脚本使用,但是不是用的Here document方法,而是使用expect -c 参数书,"-c"选项后面的字符串填充的就是命令。但是要注意本身字符串的转义符。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


推荐阅读
  • Node.js 教程第五讲:深入解析 EventEmitter(事件监听与发射机制)
    本文将深入探讨 Node.js 中的 EventEmitter 模块,详细介绍其在事件监听与发射机制中的应用。内容涵盖事件驱动的基本概念、如何在 Node.js 中注册和触发自定义事件,以及 EventEmitter 的核心 API 和使用方法。通过本教程,读者将能够全面理解并熟练运用 EventEmitter 进行高效的事件处理。 ... [详细]
  • 本文深入探讨了ASP.NET中ViewState、Cookie和Session三种状态管理技术的区别与应用场景。ViewState主要用于保存页面控件的状态信息,确保在多次往返服务器过程中数据的一致性;Cookie则存储在客户端,适用于保存少量用户偏好设置等非敏感信息;而Session则在服务器端存储数据,适合处理需要跨页面保持的数据。文章详细分析了这三种技术的工作原理及其优缺点,并提供了实际应用中的最佳实践建议。 ... [详细]
  • 如何在Linux系统中利用crontab定时执行Shell脚本任务?
    在Linux系统中,如何实现定时执行任务脚本?在服务器日常运维过程中,经常需要定期执行某些任务,例如数据库备份、日志文件切割等。通过使用crontab工具,可以轻松配置这些周期性任务,确保它们按时自动运行,提高系统管理效率和可靠性。 ... [详细]
  • 来宾 | Vmware ESXi 平台下的虚拟机在线管理与技术支持
    来宾 | Vmware ESXi 平台下的虚拟机在线管理与技术支持 ... [详细]
  • Java服务问题快速定位与解决策略全面指南 ... [详细]
  • 基于Java和JSP的电子医疗记录管理平台
    随着信息技术的快速发展,各类管理系统已在各行各业得到广泛应用。传统的人工管理模式已逐渐无法满足现代需求。本文介绍了一种基于Java和JSP技术开发的电子医疗记录管理平台,旨在提高医疗行业的信息化水平和管理效率。该平台通过整合先进的数据库技术和Web开发框架,实现了医疗记录的高效存储、查询和管理,为医护人员提供了便捷的操作界面和强大的数据支持。 ... [详细]
  • 在数据库管理中,计算字段(也称为计算列)是一种重要的技术手段。计算字段通过在表定义中使用表达式或函数,自动生成并存储计算结果,从而提高查询效率和数据一致性。本文将详细介绍计算字段的创建方法、优化技巧及其在实际应用中的案例,帮助读者更好地理解和运用这一功能。 ... [详细]
  • 理工科男女不容错过的神奇资源网站
    十一长假即将结束,你的假期学习计划进展如何?无论你是在家中、思念家乡,还是身处异国他乡,理工科学生都不容错过一些神奇的资源网站。这些网站提供了丰富的学术资料、实验数据和技术文档,能够帮助你在假期中高效学习和提升专业技能。 ... [详细]
  • Java并发环境下如何确保数据添加的唯一性? ... [详细]
  • 《软件测试精要》深度解析与实战经验分享
    《软件测试精要》深度解析与实战经验分享,系统梳理了软件测试的核心概念与关键原则,结合实际项目中的测试经验和教训,详细探讨了测试分类、测试权衡要素、测试效率、测试覆盖率以及测试框架的引入和用例设计等内容,为读者提供了全面而实用的指导。 ... [详细]
  • 在Linux环境下,本文详细探讨了Apache服务器中CGI技术的应用与实现。首先,通过使用yum包管理器安装了必要的软件,如PHP。安装完成后,对Apache服务器进行了配置,确保CGI功能正常运行。此外,还介绍了如何编写和调试CGI脚本,以及如何在实际环境中部署这些脚本以提供动态网页内容。实验结果表明,通过合理的配置和优化,Apache服务器能够高效地支持CGI应用程序,为用户提供丰富的交互体验。 ... [详细]
  • 最近,我在CentOS 5服务器上成功部署了GForge 5.7 Community Edition。与Advanced Server版本相比,虽然功能略有简化,但仍然能够满足大多数开源项目管理的需求。为了确保数据安全,我开发了一套全自动备份脚本,该脚本能够定期备份GForge的数据和配置文件,并将其存储在远程服务器上,以防止数据丢失。此外,该脚本还具备错误检测和日志记录功能,便于故障排查和维护。 ... [详细]
  • 使用cpphttplib构建HTTP服务器以处理带有查询参数的URL请求 ... [详细]
  • 本文详细介绍了如何在 Grafana 中独立于 Alertmanager 配置邮件和微信告警。具体步骤包括配置 SMTP 服务器以实现邮件告警,以及设置微信告警的集成方式。通过这些配置,用户可以更灵活地管理和接收来自 Grafana 的告警通知,确保及时响应系统异常。文章还提供了详细的配置示例和常见问题的解决方案,帮助用户顺利完成设置。 ... [详细]
  • 在《PHP应用性能优化实战指南:从理论到实践的全面解析》一文中,作者分享了一次实际的PHP应用优化经验。文章回顾了先前进行的一次优化项目,指出即使系统运行时间较长后出现的各种问题和性能瓶颈,通过采用一些通用的优化策略仍然能够有效解决。文中不仅详细阐述了优化的具体步骤和方法,还结合实例分析了优化前后的性能对比,为读者提供了宝贵的参考和借鉴。 ... [详细]
author-avatar
孙亦然5277
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有