
使用expect自动化输入密码切换用户和执行命令

"使用expect实现自动化输入密码进行用户切换及执行命令"
expect是一个Tcl语言扩展,用于自动化处理交互式应用程序,特别是在Unix/Linux环境中。它允许脚本模拟用户输入,尤其是涉及密码或需要用户交互的情况。在给定的文件中,有两个应用示例展示了如何使用expect来自动切换用户并执行特定的命令。
应用一:
这个应用演示了如何从普通用户“test”自动切换到root用户,同时自动输入root密码。首先,创建一个名为autosu.sh的脚本,使用`#!/usr/bin/expect -f`作为shebang行来指定使用expect解释器。然后,`spawn su -`启动一个新的进程执行`su -`命令,以切换到root用户。`expect ":"`等待出现密码提示符,通常显示为":"或"口令:"。接着,`send "rootpasswd\r"`发送root密码(假设是"rootpasswd"),并加上`\r`模拟回车键。最后,`interact`允许脚本与新会话进行交互,但在这个例子中,交互操作已完成,所以脚本结束。
应用二:
这个应用扩展了第一个示例,不仅切换到root用户,还执行了"ls"命令以及调用了名为"aaa.sh"的脚本。在相同的脚本结构基础上,`expect "#"`等待root用户的提示符(通常以"#"表示)。`send "ls\r"`执行`ls`命令,`send "sh aaa.sh\r"`则执行脚本"aaa.sh"。之后,`send "echo $?\r"`会打印出上一个命令(这里是"aaa.sh")的退出状态码。`sleep 10`延迟10秒,最后`interact`再次结束脚本。
在运行这些expect脚本时,需要注意的是,由于它们不是bash脚本,因此不能用`sh ***.sh`来执行。正确的做法是通过使脚本具有可执行权限(`chmod +x ***.sh`)然后直接运行,如`./***.sh`。
expect工具在需要自动化处理交互式任务时非常有用,尤其是在需要输入密码或响应特定提示时。这两个示例展示了expect在系统管理自动化中的基本用法,有助于提高效率和减少人为错误。
相关推荐








wujinshan_28
- 粉丝: 7
最新资源
- VC++开发的高效科学计算器实现
- 影子系统:计算机安全新方案
- 指纹图像文件自动重命名工具使用教程
- 探索RocketDock Docklets之MSN停靠栏功能
- 邮件群法源代码:XkziSendMail的下载与应用
- 探索MASM:硬件编程的绿色神器
- RocketDock的电池监控Docklet:Power功能解析
- Oracle数据库管理实践技巧与精华
- 语音技术应用于毕业设计词典:SpeechDict
- VC程序开发:状态栏与导航界面设计实例解析
- 新型端口查看工具Active Ports使用体验
- 深入理解AMD64位技术及指令集
- Delphi实现鼠标键盘动作的记录与回放功能
- J2ME平台下的俄罗斯方块游戏实现
- 全面管理远程桌面:多主机连接管理器1.00发布
- 简洁漂亮的静态网页后台管理框架模板
- JS与Struts、Spring、Ajax打造动态树形菜单
- Java学生信息系统实现基础功能
- 电子版新华字典:便捷实用的绿色免安装版
- VC++实现的通用语音技术类开发指南
- 动态展示图片:XML与Flash的完美结合示例
- GHOST发送端之王:ghostsrv的极致体验
- Infragistics NetAdvantage for ASP.NET 2008源代码详解
- 飞鸽传输:局域网内高效文件传输工具源代码分析