关闭

教会你Linux Shell自动交互的三种方法

发表于:2010-11-16 10:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  五、自动交互方法二

  需求2中要求采用非交互的方式改变登录用户密码,尝试用方法1,无法实现。

  这时候联想到交互信息的另一个自动输入方法,管道,通过echo + sleep + | 可以实现这个需求。

#!/bin/bash 
(echo "curpassword" 
sleep 1 
echo "newpassword"  
sleep 1 
echo "newpassword")|passwd

  测试通过,运行这个脚本,直接把当前用户的curpassword改成newpassword。

  六、自动交互方法三

  需求3中要求自动登录root账号,尝试方法1和方法2,都出现错误提示standard in must be a tty。

  这时候尝试寻找外部帮助,一个shell工具expect可以实现这个功能,其实expect就是一个专门用来实现自动交互功能的工具,expect的语法可以参考相关资料,代码如下:

#!/usr/bin/expect 
spawn su root 
expect "password: " 
send "123456\r" 
expect eof 
exit

  测试通过,运行这个脚本,直接从当前用户登录到root用户。

  七、方法总结

  方法一(重定向)简单直观,也经常有实际应用,但是在自动交互领域功能有限。

  方法二(管道)也很简单直观,有时甚至不用sleep配合就能展现强大的自动交互实力,但是在某些时候也束手无策。

  方法三(expect)在功能上是最为强大的,expect本来就是为实现自动交互功能而生,但是缺点是需要安装expect包,在嵌入式等环境下难以安装。

  三个方法各有优劣,应用的好,都可以完成Linux Shell自动交互。

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号