shell编程免交互

免交互:不需要人为控制就可以完成的自动化操作

自动化运维

shell脚本和免交互是一个概念,但是两种写法

shell:bash

here document :免交互 使用i/o重定向的方式将命令的列表提供给交互式的程序或者命令 cat read 是一种标准输入,只能接受正确的指令或者命令

 


注意事项: 1、标记可以使用任意合法字符(通常用EOF)

2、结尾标记一定要顶格写,前面不能有任何字符

3、结尾的标记后面也不能有任何字符,包括空格

4、如果开头标记前有空格,这个空格会被自动省略

 

 

 

抑制tab空格


多行注释

Expect t'c'l语言基础之上的一种工具,自动化测试和控制,在脚本中解决交互的问题

转义符: \n:换行 \t:制表符,TAB \r:回车 \b:删除键

基本命令格式: #!/usr/bin/expect

执行方式: 1、必须赋权执行 chmod 777 2、bash sh不能用 只能用 ./

语法: spawn 后面通常跟一个linux的执行命令,表示开启一个进程,并且跟踪后续的交互信息 spawn passwd lisi expect:捕获,捕获上依次执行的命令中,是否包含指定的字符串,如果有立即返回,否则等待超时时间,自动退出;默认时间10秒 expect只能捕获由spawn启动的命令或者进程输出

send向进程发送字符串,用于模拟用户的输入,该命令不能自动回车,一般在后面加上一个回车键:\r或者\n

第一种写法: expect "密码" {send"abc123\r"} 第二种写法 expect"密码" send" abc123\r" 第三种写法 expect { "密码1"{send"abc123\r"} "密码2"{send"abc123\r"} "密码3"{send"abc123\r"}

} 只要匹配其中一个情况,执行相应的send语句,然后退出expect语句

结束符: expect eof 会切换回之前的终端 interact 留在当前终端不变 set 设置超时等待时间 默认是10秒,不限制超时时间-1 set timeout 5


exp_continue 可以在expect判断之后,继续匹配expect捕获的其他内容,类似于脚本中的continue,表示允许继续向下执行指令

exp_continue结束语句不能直接使用expect eof ,否则会报错

expect{

“(yes/no)”{send"yes\r";exp_continue}

"password"{send"123\r"}

}

send_user回显信息,相当于echo跟上用户想要输出的内容 send_user ok

接收参数:类似于shell当中的位置$1 $2

set hostname [lindex $argv 0] $1

set password [lindex $argv 1] $2

 

嵌入执行模式

如果涉及到终端切换,最好不要用嵌入模式

ssh远程登陆

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值