在网上搜索一大堆以后我总结到了2个Linux交互的方法。

第一个方法 – 管道法

这个办法不是所有的地方都有用,但是呢他非常的简单方便,不需要装第三方软件的支持,在一些命令比如passwd上就非常有用了。

代码如下:

  1. #!/bin/bash
  2. (echo "curpassword"
  3. sleep 1
  4. echo "newpassword"
  5. sleep 1
  6. echo "newpassword")|passwd

这个是sh脚本,如果想直接在shell里面操作就要这样写

  1. 后执行的命令 | 先执行的命令
  2. 比如:
  3. (echo 123;echo 123) | passwd
  4. Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
  5. 这个命令就会先执行passwd然后执行前面的 echo 123将向控制台输出123 ,  多个语句必须使用;来分开,另外必须用括号包裹起来。
  6. 这个命令运行以后将会修改当前用户的密码 为123

第二个方法 – 强大的expect

expect是一个非常强大的shell工具,因为expect本来就是为实现自动交互功能而生,但是他也有个缺点,大多数的Linux都没默认安装它,需要自行安装一次。

Ubuntu用户用apt-get install expect

CentOS用户用yum install expect

来安装这个工具

首先我们要创建一个脚本文件,比如autostart,用vi进行编辑输入下面的代码

#!/usr/bin/expect
spawn /etc/webmin/start
expect "Enter PEM pass phrase:"
send "password\n"
expect eof
exit

解释下:

第一行是可以理解成声明,反正这个必须的!
第二行spawn代表运行文件
第三行如果出现了Enter PEM pass phrase:
第四行则输出password和一个回车
第五行expect eof可以理解成是退出判断,这个是必须的,跟编程里面的}一样
最后一个是退出就不解释了。。

expect因为过于强大,所以有点难懂,建议大家多看看其他例子(搜索引擎关键字:expect 例子)和基本用法。

参考:http://xloli.net/html/201108/thread-2766-1-1.html

expect脚本

  前几天在写脚本的时候我有一个功能是想切换用户,让他自动输入密码。我觉得shell脚本实现不了,于是就上网查询,

发现expect脚本可以实现,但是一直没有试验,今天闲来没事就做一下测试。

1。首先确认expect的包要安置。

[[zhuying@SOR_SYS opt]$ rpm -qa | grep expect

如果没有则需要下载安装,我安装的是expect-5.42.1-1.x86_64.rpm和expect-devel-5.42.1-1.x86_64.rpm

安装过后会显示:

[[zhuying@SOR_SYS opt]$ rpm -qa | grep expect

expect-5.43.0-5.1
expect-devel-5.42.1-1

2.查看expect的路径,可以用

[zhuying@SOR_SYS opt]$ which expect

/usr/bin/expect

[zhuying@SOR_SYS opt]$ view autosu.sh

3。确定脚本有可执行权限

chmod +x autosu.sh

#!/usr/bin/expect  -f            //这个expect的路径就是用which expect 查看的结果

spawn su - oracle             //切换用户
expect "password:"           //提示让输入密码
send "99billzy\r"       //输入oracle的密码
interact                             //操作完成

这在root用户切换到oracle用户的时候特别的快,但是在其他用户切换到oracle的时候则需要等待一段时间!

另外需要注意的是:

不能按照习惯来用sh autosu.sh来这行expect的程序,会提示找不到命令,如下:

autosu.sh: line 3: spawn: command not found
couldn't read file "password:": no such file or directory
autosu.sh: line 5: send: command not found
autosu.sh: line 6: interact: command not found

因为expect用的不是bash所以会报错。执行的时候直接./autosu.sh就可以了。~切记!

参考:http://blog.csdn.net/zhuying_linux/article/details/6657020

Linux下两种实用自动交互方法相关推荐

  1. Linux下两种增加/tmp文件的方法

    最近在弄13C cloud grid 的时候发现默认的/tmp文件大小不够了,装CC对/tmp文件的空间要求较高至少10G,否则会报"The directory "/tmp&quo ...

  2. linux下几种运行后台任务的方法

    1.问题的引入 程序员最不能容忍的是在使用终端的时候往往因为网络,关闭屏幕,执行CTRL+C等原因造成ssh断开造成正在运行程序退出,使得我们的工作功亏一篑. 其背后的主要原因在于上述的相关操作,sh ...

  3. Linux下两种TCP网络服务器实现方式:循环服务并发服务

    转载声明:this article is writen by: zhoulifa(zhoulifa@163.com) 周立发(http://zhoulifa.bokee.com) 以上博客已失效,所以 ...

  4. [已验证]双卡手机下两种来电监听方法的一些问题。

    为什么80%的码农都做不了架构师?>>>    首先,网上学习到的来电监听有两种方法,但在双卡手机上都不太正常工作. 经过用户的反馈,基本上都能监听到大部分主流双卡手机的主副卡来电了 ...

  5. 计算机 窗口打开的方法,如何打开命令行窗口?两种实用的方法介绍

    Windows系统中常常会用到命令行窗口,那么我们该如何打开命令行窗口?接下来,小编为大家介绍两种实用的打开命令行窗口的技巧,再也不必担忧如何打开命令行窗口的烦恼了. 第一种打开方法 1.点击自己的电 ...

  6. 如何将CAJ文件转换成PDF格式?分享两种实用的方法

    CAJ是一种特定的文献格式,通常用于中国学术期刊和学位论文等.在学习生活中我们查阅一些文献资料,一些权威文献报刊通常情况下都是CAJ文件格式,打开它需要使用专业的阅读工具 ,这时候就需要将它转换成PD ...

  7. centos下两种方法安装git

    centos 5 64位下两种方法安装git 这里来给大家介绍下编译安装和yum安装git.   系统:centos 5.5 64位   需要的软件包:git-latest.tar.gz epel-r ...

  8. linux自动重启电脑脚本,linux下通过脚本实现自动重启程序的方法

    烈火建站学院(LieHuo.Net)转载无论什么程序都不可能完美无缺,理论上,任何程序都有 Core Dump 的一天,正式运营的程序,尤其是服务器程序,一旦 Core Dump ,后果不堪设想,有过 ...

  9. linux中程序定时重启脚本,linux下通过脚本实现自动重启程序的方法

    烈火建站学院(LieHuo.Net)转载无论什么程序都不可能完美无缺,理论上,任何程序都有 Core Dump 的一天,正式运营的程序,尤其是服务器程序,一旦 Core Dump ,后果不堪设想,有过 ...

最新文章

  1. 23. matlab并行计算原理以及parpool函数
  2. 开发安全的 API 所需要核对的清单
  3. 【OpenGL】用OpenGL shader实现将YUV(YUV420,YV12)转RGB-(直接调用GPU实现,纯硬件方式,效率高)...
  4. 【S操作】老铁留步,干货来了!小总结云存储云办公云笔记工具——我的云工具选择,供您参考...
  5. [渝粤题库]陕西师范大学《幼儿园科学教育》作业
  6. 从程序员到阿里技术总监之路
  7. vfp控制excel使用sort_使用Python根据索引合并Excel表
  8. TCP状态转移:有限状态机
  9. 五个实用又有趣的网站
  10. CListCtrl控件的使用指南
  11. excel教程自学网_Office 全套办公软件自学视频教程word+excel+ppt
  12. matlab模拟塞曼图谱,C.基于LabVIEW的塞曼效应虚拟仿真-中国高等学校实验物理教学研究会.ppt...
  13. 锐龙r7 PRO 4700G、锐龙r5 PRO 4400G和锐龙r3 4200G 的区别
  14. Qt 多国语言部分翻译不能成功加载的原因探索
  15. tensorflow报No OpKernel was registered to support Op ‘NcclAllReduce‘
  16. 2022年连锁酒店行业研究报告
  17. Android轮播图原理思路分析+实现方案
  18. 推荐 10 个不错的网络监视工具
  19. MUMPS入门+Caché学习记录
  20. 京东运维开发工程师一面经验总结2020

热门文章

  1. sql 优化之:聚集索引的重要性和如何选择聚集索引(系列五)
  2. 如何通过AppDomain用特定的安全上下文加载外部程序集
  3. 计算机网络基础 — 网络设备转发原理
  4. Segment Routing — SRv6 — Overview
  5. 红帽虚拟化RHEV-架构简介
  6. STM32程序进入HardFault_Handler
  7. iOS SDWebImage 缓存机制与缓存策略
  8. 菜鸟学Linux 第090篇笔记 corosync+drbd+mysql
  9. 【Linux基础】第五周作业
  10. HDU1203_I NEED A OFFER!【01背包】