linux如何自动化交互脚本期望

  介绍

这篇文章给大家分享的是有关linux如何自动化交互脚本期望的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

<强>一、介绍

  希望脚本是Tcl脚本语言的拓展。用来实现自动的交互式任务,无需人为干预。在实际开发中,运行shell脚本有时候会输入linux密码或者是mysql密码等,而预计可以帮我们输入。

<强>二、安装

  期望在linux系统中没有自带,需要我们自行安装,在Ubuntu系统下,安装命令如下

?

  1

  2

<代码> sudo <代码> apt-get更新

<代码> sudo <代码> apt-get <代码> <代码>安装预计

<强>三,简单的预计脚本

<强> 3.1,编写脚本

  首先创建预计脚本

?

  1

<代码> sudo <代码> vim hello.exp

  在hello.exp下写如下内容:

?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

<代码> # !/usr/bin/期望

  ,

<代码> <代码>设置超时5

  ,

<代码>产卵苏 <代码>

  ,

<代码>期待{

, <代码>, <代码> assword{发送 <代码>“123456 \ r" <代码>} <代码> #你的linux密码代码

<代码>}

  ,

<代码>交互

  运行hello.exp

?

  1

<代码>期待hello.exp

  运行后,你会发现你的用户就变成根用户了,我们用过linux的会知道,进入根用户是需要输入密码的,而使用了会脚本,他就会自动帮我们输入密码。这就是预期的自动化交互。

發inux如何自动化交互脚本期望"

<强> 3.2,解释脚本

  (1)<强> # !/usr/bin/期望
  指定要运行的脚本,与外壳脚本中的<代码> # !/bin/bash 一样意思,若你不知道你的期望安装在哪里,可以使用<代码>期待>

發inux如何自动化交互脚本期望“

  (2)<强>设置超时5
  设置:是设置变量,可以设置<强>自定义变量强,也可以设置期望脚本<强>内部变量的值
  超时:<强>超时是期望脚本的<强>内部变量强,我们自定义名称的使用不能使用这种<强>内部变量名 .timeout意思是超时时间,单位是秒,默认是10年代超时,也可以设置1,永不超时

  设置超时5:意思是在期望语句中,5 s后超时,不再作出选择。

  (3)<强>产卵苏
  开启一个新的进程来执行苏<代码> 命令

  (4)<强>期待{assword发送{“123465 \ r "}}
  期望:从进程中接收信息,如果匹配成功,就执行期望后的动作
  发送:向进程发送字符串

?

  1

  2

  3

<代码>期待{

<代码>,,,, <代码> assword发送{ <代码>“123465 \ r" <代码>}

<代码>}

  说明:判断输出的信息有没有包含<代码> assword> 123456 \ r>

  (5)<强>
  执行完卵内的命令后不退出,剩下的操作由我们人工来执行。如登陆ssh,期望脚本可以帮我们登录(不用手动输入密码),登陆之后需要我们手动交互。

<强> 3.3,总结

  看到这里,相信你已经知道了期望脚本本质:提前知道了linux系统的返回信息,并捕获这些信息,来作出应答。

<强>四,正文

<强> 4.1,常用命令说明

  命令   说明   设置超时n   设置期望语句超时时间为n秒,1为永不超时   set  name 价值   设置变量名为名字,其值为价值   set  name  lindex $ argv [0]   设置变量名为名字,其值为,传入,期望脚本的第一个,参数,第。一个参数的索引值为0,第二个为1,依次类推   产卵   启动新的进程,执行命令或者指定程序   预计   接收进程中返回的信息,如果匹配成功(有大小写区分),就执行期望后的动作   发送   向进程发送字符串   send_user   用来打印信息,相当于壳中的回声   exp_continue   执行完料后的动作后,使期望不退出,继续往下匹配   预计eof   不允许用户交互,直接退出(这个用的会比多互动)   交互   允许用户交互

linux如何自动化交互脚本期望