shell脚本第八章shell编程免交互

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

云计算中的免交互主要为自动化运维。

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

 

 

Here Document :使用i/o重定向的方式,将命令的列表提供给交互式的程序或者命令。(是一种标准输入,只能接受正确的指令或者命令)
语法格式:
命令 << 标记 (可以自定义标记,不过通常用EOF)

注意事项:

1,标记可以使用任意合法字符,通常用EOF作为标记。

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

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

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

cat结合免交互重定向输出到指定文件

cat <<EOF>> test.txt

Expect免交互:

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

转义符:

\n:换行

\t:制表符,TAB

\r:回车

\b:删除键

基本命令格式:

#!/use/bin/expect

执行方式:

1,必须赋权执行 chmod777

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秒

set timeout 5

例题:免交胡实现修改密码

vim passwd.sh

#!/usr/bin/expect

set timeout 5

spawn passwd lisi

expect “新的密码”

send “abc123\r”

expect “重新输入新的密码”

send “abc123\r”

expect eof

chmod 777 passwd.sh

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

set user [lindex $argv 0]

set passwd [lindex $argv 1]

spawn su - $user

expect "密码"

send "$passwd\r"

expect "$"

send_user "普通用户"

expect "#"

send _user "管理员"

小作业,看能不能实现判断a

shell嵌入式执行系统密码

嵌入执行模式有一个问题:如果涉及到终端切换,最好就不要用嵌入模式了

 

设定一个脚本实行自动远程连接:

 

参的方式实现自动远程登录(如果连接被绝或者主机不存在):

 

 

作业:

用免交互的方式给硬盘分区,格式化,挂载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VIVADO经常使用TCL脚本对FPGA进行调试,通过JTAG转AXI对内部模块进行控制,但是TCL语言书籍比较少,这边是一个英文的TCL语言学习书籍. 第 1 章. TCL基本知识................................................................................................................1 1.1 什么是TCL..............................................................................................................................1 1.2 TCL自学工具...........................................................................................................................1 1.3 TCL软件包..............................................................................................................................2 1.4 TCL命令格式...........................................................................................................................2 1.5 TCL脚本文件和SOURCE 命令..................................................................................................3 1.6 可执行脚本文件(EXECUTABLE FILE)...........................................................................................3 1.7 获得帮助.................................................................................................................................4 1.7.1 Windows系统.............................................................................................................4 1.7.2 Unix系统......................................................................................................................4 第 2 章. 输出、赋值与替换........................................................................................................5 2.1 PUTS.........................................................................................................................................5 2.2 SET & UNSET..............................................................................................................................5 2.3 替换........................................................................................................................................6 2.3.1 $...................................................................................................................................6 2.3.2 []..................................................................................................................................6 2.3.3 " " 和{}..........................................................................................................................6 2.3.4 \...................................................................................................................................7 第 3 章. 数学表达式与EXPR命令..............................................................................................8 3.1 数学和逻辑运算符..................................................................................................................8 3.2 数学函数.................................................................................................................................8 3.3 数学运算举例.........................................................................................................................9 3.4 INCR命令................................................................................................................................9 第 4 章. 字符串........................................................................................................................10 4.1 基本命令集...........................................................................................................................10 4.2 APPEND命令..........................................................................................................................10 4.3 FORMAT命令..........................................................................................................................10 4.3.1 format命令说明......................................................................................................10 4.3.2 format举例..............................................................................................................11 4.4 SCAN命令.............................................................................................................................12 4.5 BINARY命令...........................................................................................................................13 4.6 SUBST命令..............................................................................................................................14 4.7 STRING 命令...........................................................................................................................15 4.7.1 string 命令列表.........................................................................................................15 4.7.2 字符串比较................................................................................................................16 4.7.3 string match字符串匹配.........................................................................................16 4.7.4 字符串替换................................................................................................................18 4.7.5 字符类别(class)测试.................................................................................................18 4.7.6 字符串映射................................................................................................................19 第 5 章. TCL列表操作..............................................................................................................20 5.1 列表命令集...........................................................................................................................20 5.2 LIST命令.................................................................................................................................20 5.3 CONCAT命令.........................................................................................................................21 5.4 LAPPEND命令........................................................................................................................21 5.5 LLENGTH 命令.........................................................................................................................22 5.6 LINDEX命令............................................................................................................................22 5.7 LRANGE命令..........................................................................................................................22 5.8 LINSERT 和LREPLACE命令........................................................................................................22 5.9 LSEARCH命令.........................................................................................................................23 5.10 LSORT命令.............................................................................................................................24 5.11 JOIN与SPLIT命令...................................................................................................................24 5.12 FOREACH控制结构................................................................................................................27 第 6 章. 数组............................................................................................................................28 6.1 数组的定义与格式................................................................................................................28 6.2 数组变量...............................................................................................................................29 6.3 多维数组...............................................................................................................................29 6.4 数组操作命令.......................................................................................................................30 6.4.1 array get命令.........................................................................................................30 6.4.2 array names命令....................................................................................................30 6.4.3 遍历数组...................................................................................................................31 6.4.4 用数组定义结构........................................................................................................31 第 7 章. 控制结构命令.............................................................................................................32 7.1 IF/ELSE命令............................................................................................................................32 7.2 FOR命令................................................................................................................................33 7.3 WHILE命令.............................................................................................................................33 7.4 BREAK 与 CONTINUE命令........................................................................................................34 7.5 SWITCH命令...........................................................................................................................34 7.6 CATCH 命令...........................................................................................................................35 7.7 ERROR命令............................................................................................................................36 7.8 RETURN 命令...........................................................................................................................37 7.9 EXIT命令................................................................................................................................37 第 8 章. 过程与作用域.............................................................................................................38 8.1 PROC—过程定义命令...........................................................................................................38 8.2 作用域...................................................................................................................................40 8.2.1 过程的作用域............................................................................................................40 8.2.2 变量的作用域............................................................................................................40 8.3 UPVAR命令............................................................................................................................42 8.4 RENAME命令.........................................................................................................................44 8.5 特殊变量...............................................................................................................................45 8.5.1 命令行参数................................................................................................................45 8.5.2 env--环境变量数组...................................................................................................45 8.6 EVAL命令..............................................................................................................................46 8.7 UPLEVEL命令..........................................................................................................................48 第 9 章. 正则表达式(REGULAR EXPRESSIONS)...................................................................49 9.1 REGEXP命令..........................................................................................................................49 9.2 REGSUB命令...........................................................................................................................51 9.3 正则表达式的语法................................................................................................................52 9.3.1 分支(branch)和原子(atom)....................................................................................52 9.3.2 基本语法...................................................................................................................52 9.3.2.1 匹配字符........................................................................................................................................52 9.3.2.2 限定匹配........................................................................................................................................53 9.3.2.3 方括号表达式与字符集.................................................................................................................53 9.3.2.4 匹配分支........................................................................................................................................54 9.3.2.5 量词(Qulifier)...........................................................................................................................54 9.3.2.6 子模式与匹配报告捕获.................................................................................................................55 9.3.2.7 反斜杠引用....................................................................................................................................56 9.3.2.8 匹配优先级....................................................................................................................................56 9.3.3 高级正则表达式(AREs).........................................................................................57 9.3.3.1 反斜杠换码(escape)序列............................................................................................................57 9.3.3.2 归整元素(collating element).....................................................................................................57 9.3.3.3 等价类(equivalence class)........................................................................................................58 9.3.3.4 字符类(character class).............................................................................................................58 9.3.3.5 非贪婪量词....................................................................................................................................59 9.3.3.6 约束量词........................................................................................................................................59 9.3.3.7 回退引用........................................................................................................................................59 9.3.3.8 前瞻(lookahead).........................................................................................................................60 9.3.3.9 换行符敏感的匹配.........................................................................................................................60 9.3.3.10 嵌入式选项...............................................................................................................................60 9.3.3.11 扩展语法...................................................................................................................................60 9.3.4 语法小结...................................................................................................................60 9.3.5 其它支持正则表达式的命令......................................................................................60 第 10 章. 名字空间.................................................................................................................62 10.1 创建名字空间...................................................................................................................62 10.2 用::限定符来使用变量和过程...........................................................................................62 10.3 名字空间的变量...............................................................................................................63 10.4 过程的进口与出口............................................................................................................64 10.5 内省(INTROSPECTION).........................................................................................................65 10.6 名字空间命令集...............................................................................................................65 第 11 章. 跟踪与调试.............................................................................................................67 11.1 CLOCK命令...........................................................................................................................67 11.1.1 clock clicks命令......................................................................................................67 11.1.2 clock seconds命令................................................................................................67 11.1.3 clock format命令...................................................................................................68 11.1.4 clock scan命令.......................................................................................................70 11.2 INFO 命令...............................................................................................................................71 11.2.1 info level..................................................................................................................72 11.2.2 info exists.................................................................................................................72 11.3 TRACE命令............................................................................................................................73 11.3.1 trace variable.........................................................................................................73 11.3.2 trace vdelete..........................................................................................................75 11.3.3 trace vinfo...............................................................................................................75 第 12 章. 脚本库与软件包......................................................................................................76 12.1 声明和使用软件包............................................................................................................76 12.1.1 软件包定位................................................................................................................76 12.1.2 声明软件包命令........................................................................................................76 12.1.3 加载软件包命令........................................................................................................76 12.1.4 自动加载与软件包索引.............................................................................................77 12.1.5 用链接库提供软件包.................................................................................................79 12.2 PACKAGE命令集...................................................................................................................80 12.3 小结..................................................................................................................................80 第 13 章. 文件操作与程序调用...............................................................................................81 13.1 文件操作...........................................................................................................................81 13.1.1 文件I/O....................................................................................................................81 13.1.2 文件系统信息命令.....................................................................................................82 13.1.2.1 glob命令.................................................................................................................................83 13.1.2.2 file命令集.................................................................................................................................83 13.2 程序调用...........................................................................................................................85 13.2.1 用open命令打开一个进程管道..............................................................................85 13.2.2 用exec命令调用程序..............................................................................................87 13.2.3 pid命令....................................................................................................................88 第 14 章. 套接字与事件驱动编程简介....................................................................................89 14.1 套接字编程.......................................................................................................................89 14.1.1 socket命令..............................................................................................................89 14.1.1.1 Client端socket命令..............................................................................................................89 14.1.1.2 Server端socket命令选项......................................................................................................90 14.1.2 用fconfigure配置套接字........................................................................................90 14.1.3 C/S编程举例............................................................................................................90 14.2 事件驱动编程...................................................................................................................93 14.2.1 after命令.................................................................................................................93 14.2.2 fileevent命令..........................................................................................................96 14.2.3 vwait命令................................................................................................................96 14.2.4 fconfigure命令.......................................................................................................97 14.2.4.1 fconfigure语法.......................................................................................................................97 14.2.4.2 非阻塞I/O................................................................................................................................98 14.2.4.3 缓冲..........................................................................................................................................98

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值