Linux下两种实用自动交互方法
在网上搜索一大堆以后我总结到了2个Linux交互的方法。
第一个方法 – 管道法
这个办法不是所有的地方都有用,但是呢他非常的简单方便,不需要装第三方软件的支持,在一些命令比如passwd上就非常有用了。
代码如下:
- #!/bin/bash
- (echo "curpassword"
- sleep 1
- echo "newpassword"
- sleep 1
- echo "newpassword")|passwd
这个是sh脚本,如果想直接在shell里面操作就要这样写
- 后执行的命令 | 先执行的命令
- 比如:
- (echo 123;echo 123) | passwd
- Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
- 这个命令就会先执行passwd然后执行前面的 echo 123将向控制台输出123 , 多个语句必须使用;来分开,另外必须用括号包裹起来。
- 这个命令运行以后将会修改当前用户的密码 为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下两种实用自动交互方法相关推荐
- Linux下两种增加/tmp文件的方法
最近在弄13C cloud grid 的时候发现默认的/tmp文件大小不够了,装CC对/tmp文件的空间要求较高至少10G,否则会报"The directory "/tmp&quo ...
- linux下几种运行后台任务的方法
1.问题的引入 程序员最不能容忍的是在使用终端的时候往往因为网络,关闭屏幕,执行CTRL+C等原因造成ssh断开造成正在运行程序退出,使得我们的工作功亏一篑. 其背后的主要原因在于上述的相关操作,sh ...
- Linux下两种TCP网络服务器实现方式:循环服务并发服务
转载声明:this article is writen by: zhoulifa(zhoulifa@163.com) 周立发(http://zhoulifa.bokee.com) 以上博客已失效,所以 ...
- [已验证]双卡手机下两种来电监听方法的一些问题。
为什么80%的码农都做不了架构师?>>> 首先,网上学习到的来电监听有两种方法,但在双卡手机上都不太正常工作. 经过用户的反馈,基本上都能监听到大部分主流双卡手机的主副卡来电了 ...
- 计算机 窗口打开的方法,如何打开命令行窗口?两种实用的方法介绍
Windows系统中常常会用到命令行窗口,那么我们该如何打开命令行窗口?接下来,小编为大家介绍两种实用的打开命令行窗口的技巧,再也不必担忧如何打开命令行窗口的烦恼了. 第一种打开方法 1.点击自己的电 ...
- 如何将CAJ文件转换成PDF格式?分享两种实用的方法
CAJ是一种特定的文献格式,通常用于中国学术期刊和学位论文等.在学习生活中我们查阅一些文献资料,一些权威文献报刊通常情况下都是CAJ文件格式,打开它需要使用专业的阅读工具 ,这时候就需要将它转换成PD ...
- centos下两种方法安装git
centos 5 64位下两种方法安装git 这里来给大家介绍下编译安装和yum安装git. 系统:centos 5.5 64位 需要的软件包:git-latest.tar.gz epel-r ...
- linux自动重启电脑脚本,linux下通过脚本实现自动重启程序的方法
烈火建站学院(LieHuo.Net)转载无论什么程序都不可能完美无缺,理论上,任何程序都有 Core Dump 的一天,正式运营的程序,尤其是服务器程序,一旦 Core Dump ,后果不堪设想,有过 ...
- linux中程序定时重启脚本,linux下通过脚本实现自动重启程序的方法
烈火建站学院(LieHuo.Net)转载无论什么程序都不可能完美无缺,理论上,任何程序都有 Core Dump 的一天,正式运营的程序,尤其是服务器程序,一旦 Core Dump ,后果不堪设想,有过 ...
最新文章
- 23. matlab并行计算原理以及parpool函数
- 开发安全的 API 所需要核对的清单
- 【OpenGL】用OpenGL shader实现将YUV(YUV420,YV12)转RGB-(直接调用GPU实现,纯硬件方式,效率高)...
- 【S操作】老铁留步,干货来了!小总结云存储云办公云笔记工具——我的云工具选择,供您参考...
- [渝粤题库]陕西师范大学《幼儿园科学教育》作业
- 从程序员到阿里技术总监之路
- vfp控制excel使用sort_使用Python根据索引合并Excel表
- TCP状态转移:有限状态机
- 五个实用又有趣的网站
- CListCtrl控件的使用指南
- excel教程自学网_Office 全套办公软件自学视频教程word+excel+ppt
- matlab模拟塞曼图谱,C.基于LabVIEW的塞曼效应虚拟仿真-中国高等学校实验物理教学研究会.ppt...
- 锐龙r7 PRO 4700G、锐龙r5 PRO 4400G和锐龙r3 4200G 的区别
- Qt 多国语言部分翻译不能成功加载的原因探索
- tensorflow报No OpKernel was registered to support Op ‘NcclAllReduce‘
- 2022年连锁酒店行业研究报告
- Android轮播图原理思路分析+实现方案
- 推荐 10 个不错的网络监视工具
- MUMPS入门+Caché学习记录
- 京东运维开发工程师一面经验总结2020
热门文章
- sql 优化之:聚集索引的重要性和如何选择聚集索引(系列五)
- 如何通过AppDomain用特定的安全上下文加载外部程序集
- 计算机网络基础 — 网络设备转发原理
- Segment Routing — SRv6 — Overview
- 红帽虚拟化RHEV-架构简介
- STM32程序进入HardFault_Handler
- iOS SDWebImage 缓存机制与缓存策略
- 菜鸟学Linux 第090篇笔记 corosync+drbd+mysql
- 【Linux基础】第五周作业
- HDU1203_I NEED A OFFER!【01背包】