Linux中shell自动交互的使用



自动交互方法二

 

需求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包,在嵌入式等环境下难以安装。

 

三个方法各有优劣,应用的好,都可以让实际工作中的很多琐事一劳永逸。()

 

P.S:本人也是刚接触shell,以上是我在shell学习过程中对shell自动化脚本的一些初浅的看法和总结,一方面可以把"懒人"从一些重复的雷同的工作量中解脱出来,另一方面在实际应用中可能也会有用武之地。以上3种方法可能存在错误或者疏漏,欢迎前辈们批评指正,或者有其他更好的方法希望可以交流探讨~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值