Shll编程之期望免交互

  

Shll编程之期望免交互

  

1.预计概述

  

2.预计安装(底层语言Tcl)

  

3.预计基本命令

  

4.预计执行方式

  

5.预计案例

  

期待概述:

  

1.预计是建立在tcl语言基础上的一个工具,预计是用来进行自动化控制和测试的工具。主要解决shell脚本中不可交互的问题。对于大规模的linux运维很有帮助。

  

2。在linux运维和开发中,我们经常需要远程登录服务器进行操作,登录的过程是一个交互的过程,可能会余姚输入是/否密码等信息。为了模拟这种输入,可以使用期望脚本。

  

希望安装

  

1。挂载光盘

  

2。制作本地百胜源

  

执行安装命令:yum - y安装预计

  

基本命令:

  <编辑> 1.发送:向进程发送字符串,用于模拟用户的输入   

该命令不能自动回车换行,一般要加\ r(回车)

  <编辑> 2.预计   

期待的一个内部命令判断上次输出结果里是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回

  

只能捕捉由产卵启动的进程的输出

  

# # # # # 3.产卵:启动进程,并跟踪后续交互信息

  <编辑> 4.互动:执行完成后保持交互状态,把控制权交给控制台   <编辑> 5.超时:指定超时时间,过期则继续执行后续指令   

单位是:秒

  

超时1为永不超时

  

默认情况下,超时时间是10秒

  <编辑> 6. exp_continue   

允许希望继续向下执行指令

  <编辑> 7. send_user:   

回显命令,相当于回波

  <编辑> 8。$ argv参数数组:   

期待脚本可以接受从bash传递的参数,可以使用lindex $ argv [n]获得,n从0开始,分别表示第一个,第二个,第三个....参数

  <编辑> 9。希望脚本必须以交互或期望ecof结束,执行自动化任务通常期望eof就够了   

期待eof实在等待结束标志。由产卵启动的命令在结束时会产生一个eof标记,期望eof即在等待这个标记

  

期待执行方式:

  
直接执行
  
 <代码类="语言java "> [root@ce ~] # a.sh
  # !/usr/bin/expect//预计二进制文件的路径
  设置超时60//60秒等待时间
  log_file测试。日志//日志文件
  log_user 1//日志用户
  设置主机名lindex $ argv[0]//追加参数0,统计变量,加载第1位置
  设置密码lindex $ argv[1]//追加参数1,统计变量,加载第2位置
  产卵ssh root@美元主机名
  预计{//进行匹配
  “(yes/no)”
  {发送“是的/r”; exp_continue}//输入是的,继续执行
  “*密码”//参数2
  {发送“密码\ r美元”}//交给控制台人为输入
  }
  交互
  (root@ce ~) # chmod + x a.sh
  root@ce ~ #。/a.sh  
  
Demo1:远程登录
  
 <代码类="语言java "> [root@localhost选择]# yum安装预计- y//安装服务
  # vim a.sh root@localhost选择
  
  # !/usr/bin/期望
  #超时时间
  设置超时20
  log_file test.log
  log_user 1
  #参数传入
  设置主机名lindex $ argv [0]
  设置密码lindex $ argv [1]
  #追踪命令
  产卵ssh root@美元主机名
  #捕捉信息并且匹配,免交互执行
  预计{
  “(yes/no)”
  {发送“是的\ r”; exp_continue}
  “*密码”
  {发送" $密码\ r "}
  }
  #控制权交给控制台执行
  交互
  
  # chmod + x a.sh root@localhost选择
  (root@localhost选择)#。/h 192.168.56.129 123123
  产卵ssh root@192.168.56.129
  主机的真实性192.168.56.129(192.168.56.129)”不能成立。
  指纹ECDSA关键是SHA256: DSqXtMX4L3DIIYCai7ACEftdbCIH5n0Y5SPpGCzsjdw。
  指纹ECDSA关键是MD5:14:93:39:65:27:31: a6:28:8b: 28: d1:2c: fb: 32:7b: 4 d。
  你确定你要继续连接(是/否)?是的
  警告:永久“192.168.56.129”(ECDSA)添加到已知的主机列表。
  root@192.168.56.129的密码:
  最后登录:清华2019年10月10日09:46:08 192.168.56.1//此时已远程登录对方主机
  (root@localhost ~) #登出//按Ctrl + d退出远程登录
  连接192.168.56.129关闭。 
  
嵌入执行:
  
 <代码类="语言java "> [root@ce ~] # b.sh
  # !/bin/bash
  主机名=1美元
  密码=2美元/usr/bin/expect<& lt; eof
  产卵ssh root@ ${主机名}
  预计{
  “(yes/no)”
  {发送“是的\ r”; exp_continue}
  “*密码”
  {发送" $密码\ r "}
  }
  预计“* #”
  发送“退出\ r”
  预计eof
  EOF
  (root@ce ~) #源b.sh 

Shll编程之期望免交互