shell编程和免交互

免交互:不需要人为控制就可以完成的自动操作
自动化运维
shell脚本和免交互是一个概念,但是是两种写法
bash
here Document 免交互
使用IO重定向的方式将命令的列表提供给交互式的命令
例如:cat ,read
是一种标准的输入,只能接受正确的

注意事项:
1、标记可以使用任意合法字符(通常使用EOF作为标记)
2、结尾的标记一定要定格写,前面不能有任何字符
3、结尾的标记后面也不能有任何字符,包括空格
4、如果开头的标记前有空格,这个空格会被自动省略

多行注释 :<<EOF 
内容 
内容 
EOF

面试和工作要用
Expect (tcl语音基础之上的一种工具,自动化测试和控制,在脚本中解决交互问题)
转义符:
\n:换行
\t:制表符,TAB键
\r:回车
\b:删除键

基本命令格式:
#!/usr/bin/expect
执行方式:
1.必须赋权执行(chmod 777)
2.不能用bash,sh也不能用,只能用./来执行
语法:
spawn 后面通常跟一个Linux的执行命令。表示开启一个会话,启动一个进程,并且跟踪后续的交互信息
spawn passwd list
expect :捕获,捕获上一次执行的命令中,是否包含指定的字符串,如果有立即返回,否则等待超时时间,自动退出,默认超时十秒
expect只能捕获由spawn启动的进程输出

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

第一种写法:
expect "密码" {send “abc123\r”}
第二种写法:
expect “密码”
send “abc123\r”
第三种:多分支结构
expect                                                                只要满足一个,就能输出
{
“密码1” {send “abc\r”}
“密码2”{send“abc\r”}
“密码3”(send“abc\r”)
}
只要匹配了其中一个情况,执行相应的send语句,然后退出expect语句

结束符:
expect eof 和interacr
1.会切换之前的终端
2.留在当前终端不变

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 hosthome [lindex $argv0] $1
set password [lindex $argv1] $2

ssh远程登录
工作中会用一个免交互的脚本,来实现自动登录

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值