shell脚本免交互

一、Here Document

概述

1、使用I/O重定向的方式将命令列表提供给交互式程序
2、标准输入的一种替代品
3、语法格式

命令 <<标记符
……
……
标记符

注意事项:
1、标记可以使用任意合法字符
2、结尾的标语一定要顶格写,前面不能有任何字符
3、结尾的标记后面也不能有任何字符(包括空格)
4、开头标记前后的空格会被省略

实例

修改变量
[root@localhost ~]# read a
10
[root@localhost ~]# echo $a
10
[root@localhost ~]# read a <<EOF
> 220
> EOF
[root@localhost ~]# echo $a
220
变量替换
[root@localhost ~]# a=$(cat<<EOF
> 20
> $a
> EOF
> )
[root@localhost ~]# echo $a
20 220
关闭变量替换
[root@localhost ~]# a=$(cat<<'EOF'
> 30
> $a
> EOF
> )
[root@localhost ~]# echo $a
30 $a

二、expect

一、概述

1、Expect是建立在tcl基础上的一个工具,Expect是用来进行自动化控制和测试的工具。主要解决shell脚本中交互相关的问题。
2、expect是免交互的软件,需要安装。软件名expect。

基本命令
expect
1、判断上次输出结果中是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回
2、只能捕捉由spawn启动的进程的输出
3、用于接收命令执行后的输出,然后和期望的字符串匹配

send
1、向进程发送字符串,用于模拟用户的输入
2、该命令不能自动回车换行,一般要加\r (回车),\n(换行)

spawn
启动进程,并跟踪后续交互信息

结束符
1、expect eof:等待执行结束(用于执行自动化任务)
2、interact:执行完成后保持交互状态,把控制权交给控制台

set
1、设置超时时间,过期则继续执行后续指令
2、单位是秒
3、timeout -1表示永不超时
4、默认情况下,timeout是10秒
例:set timeout 20 #登录时超过到少秒退出

exp_ continue
允许expect继续向下执行指令

send_user
回显命令,相当于echo

开启日志文件
log_file test.log #日志记录操作

显示信息
log_user 1 #1为屏幕输出信息,0为不输出信息

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

二、经典案列ssh远程登录

#!/usr/bin/expect
set timeout 10
1og_file ex.1og
1og_user 1

set user [lindex $argv 0]
set ip [lindex $argv 1]
set pass [lindex $argv 2]

spawn ssh $user@$ip

expect {
	“passwd:{ send "$pass\r"; }
}
#interact

expect "#"
send "ls\r"
send "ifconfig ens33\r"
send "exit\r"
expect eof
#!/bin/bash
expect -C “
spawn ssh root@192. 168.238.150
expect \"password:\" { send \"123456\r\" }
expect \"]#\" { send \"1s\r\" }
expect \"]#\" { send \"ifconfig ens33\r\" }
expect \"]#\" { send \"exit\r\" }
expect eof
”
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值