你了解Linux系统么?你是Linux系统的应用者么?如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享一下。

一、背景

shell脚本在处理自动循环或大的任务方面可节省大量的时间,通过创建一个处理任务的命令清单,使用变量、条件、算术和循环等方法快速创建脚本以完成相应工作,这比在命令行下一个个敲入命令要省时省力得多。

但是有时候我们可能会需要实现和交互程序如ftp,telnet服务器等进行交互的功能,这时候我们需要用到shell的自动交互功能,本文收集了较常用的三种自动交互方法,并进行了比较和总结。

二、需求

需求1:
从一台Linux机器ftp登陆到另一台Linux机器,进行系列操作后关闭,懒得每次都手动输入密码。

需求2:
改变登录用户密码,懒得每次都输入新旧密码。

需求3:
希望su自动登录到root账户,懒得每次都输入root密码。

三、调试环境

终端:SecureCRT

系统:WinXP, CentOS 4.4(VmWare)

Shell:bash

注:shell有很多种,B类SHELL(sh, bash, ksh)之间行为相近;C类SHELL(csh, tcsh)之间行为相近,还有zsh和rc等shell,本文的调试环境是bash。

四、自动交互方法一

自动交互最关键的就是交互信息的自动输入,首先联想到文件重定向,在shell编程中有这样一种用法(参考Linux与UNIX SHELL编程指南 chapt 5.7):"command << delimiter  从标准输入中读入,直至遇到delimiter分界符。"

重定向操作符command << delimiter是一种非常有用的命令,shell将分界符delimiter之后直至下一个同样的分界符之前的所有内容都作为输入,遇到下一个分界符, shell就知道输入结束了。最常见的delimiter分界符是EOF,当然完全可以自定为其他字符。

对于需求1 要求的自动登陆ftp,并作系列操作,则可以用这种方法进行自动交互。代码如下:

#!/bin/bash  ftp -i -n 192.168.167.187 << EOF user hzc 123456  pwd  cd test  pwd  close  bye  EOF 

  测试可以发现,如上代码使用帐号名hzc,密码123456成功登陆了ftp服务器,并进入目录,打印出了pwd。

五、自动交互方法二

需求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自动交互。

转载于:https://www.cnblogs.com/qq78292959/archive/2011/07/29/2121221.html

教会你Linux Shell自动交互的三种方法相关推荐

  1. linux自动点击软件上的按钮有什么用,教会你Linux Shell自动交互的三种方法

    你了解Linux系统么?你是Linux系统的应用者么?如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享 ...

  2. linux配置yum源的三种方法:

    linux配置yum源的三种方法: 1.配置网络yum源 2.通过上传镜像文件配置本地yum源 3.通过连接存储或本地镜像文件配置本地yum源(虚拟机) 配置各种yum源的时候,需要提前知道自己的li ...

  3. js中当等于最小值是让代码不执行_网页中JS函数自动执行常用三种方法

    本文为大家分享了在网页中JS函数自动执行常用方法,供大家参考,具体内容如下 一.JS方法 1.最简单的调用方式,直接写到html的body标签里面: 2.在JS语句调用: function myfun ...

  4. Linux清空文件内容的三种方法

    Linux清空文件内容的三种方法 测试文件:a.txt 第一种: $> a.txt 第二种: $echo "" > a.txt 第三种: $cat /dev/null ...

  5. Java程序初始化启动自动执行的三种方法

    目录 @PostConstruct注解 CommandLineRunner接口 ApplicationRunner 接口 @Order注解设置启动顺序 分享一下自己用过的java程序初始化启动自动执行 ...

  6. html网页自动运行函数,在网页中JS函数自动执行常用三种方法

    在网页中JS函数自动执行常用三种方法 在HTML中的Head区域中,有如下函数: functionn MyAutoRun() { //以下是您的函数的代码,请自行修改先! alert("函数 ...

  7. html手机不能自动播放音乐,解决移动端浏览器 HTML 音频不能自动播放的三种方法...

    由于Android,IOS移动端的浏览器以及微信自带的浏览器为了用户更好的体验,规定不自动播放音频视频,默认屏蔽了autoplay,如果要想达到自动播放效果,需要单独处理,方法有以下几种: 第一种:添 ...

  8. linux查看磁盘挂载的三种方法

    今天要讲的是linux下怎么查看磁盘的挂载,包括挂载点和挂载的硬盘或逻辑卷. 第一种方法:使用df命令,这个命令比较常用,大家都很熟悉.问题是这种方法,有时候挂载点和挂载的卷不在同一行,使用脚本分析需 ...

  9. 解决移动端浏览器 HTML 音频不能自动播放的三种方法

    由于Android,IOS移动端的浏览器以及微信自带的浏览器为了用户更好的体验,规定不自动播放音频视频,默认屏蔽了autoplay,如果要想达到自动播放效果,需要单独处理,方法有以下几种: 第一种:添 ...

最新文章

  1. 强大自己,从学习开始!2020年最有内容的订阅号,每一个都是万里挑一!
  2. java 中对多态的理解
  3. 关于创建Custom Container View Controller
  4. struts2静态方法和动态方法调用
  5. mac版smali2java_Android反编译apk并重新打包签名(Mac环境)
  6. HTML <dfn> 标签的简单介绍
  7. Struts2从一个action转到另一个action的两种方法
  8. python 数据挖掘论文,Orange:一个基于 Python 的数据挖掘和机器学习平台
  9. POI Excel 合并数据相同的行
  10. hdu 2545 并查集
  11. WHATWG API——url.parse()的替代方案
  12. EndNote 20
  13. 广告位出售单页HTML源码
  14. Google Alphabet
  15. python获取js变量_Python和读取JavaScript变量valu
  16. weka 执行结果MySQL_WEKA数据解析实验.doc
  17. 调校显示器,最好显色指南
  18. 计算机最新会议合集:可推优发表SCI
  19. 在Firefox 给新标签页添加bing每日一图为背景图的方法
  20. 那个人对话了200亿次的微软小冰,就快十八岁了

热门文章

  1. mysql 查询执行过程_深入浅出Mysql(一)——sql查询执行过程
  2. 微信抢红包的方案_免费公开实收20000的烤鸭店营销方案,餐饮行业可复用
  3. Linux 系统配置Java Idea Tomcat 全过程
  4. 『ACM-算法-二分法』算法竞赛进阶指南--在单调递增序列a中查找大于等于X的数中最小的一个,即X或X的后继
  5. XML--XML作用
  6. 数学--数论--快速幂--最大公约数--位运算模板
  7. gan神经网络_神经联觉:当艺术遇见GAN
  8. USB device如何进入suspend模式
  9. 求职OMG——大学生就业指导与技能
  10. “盛大文学”年终派对