1-23-expect、正则表达式和sed的使用.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《1-23-expect、正则表达式和sed的使用.docx》由会员分享,可在线阅读,更多相关《1-23-expect、正则表达式和sed的使用.docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1-23-expect、正则表达式和sed的使用本节所讲内容:q 实战:expect实现无交互登录q 正则表达式q sed第1章 expect使用TCL(Tool command language)是一种类似shell脚本的语言,你可以使用它来完成许多操作。expect是从它发展出来的。如果你想要写一个能够自动处理输入输出的脚本(如向用户提问并且验证密码)又不想面对C或者Perl,那么expect是你的最好的选择expect是在tcl基础上创建起来的,它还提供了一些tcl所没有的命令,它可以用来做一些linux下无法做到交互的一些命令操作1.1 安装expectrootxuegod67 mnt
2、# yum -y install expectLoaded plugins: product-id, refresh-packagekit, security, subscription-managerThis system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.base | 3.9 kB 00:00 . Setting up Install ProcessResolving Dependencies- Running transact
3、ion check- Package expect.x86_64 0:5.44.1.15-5.el6_4 will be installed- Processing Dependency: libtcl8.5.so()(64bit) for package: expect-5.44.1.15-5.el6_4.x86_64- Running transaction check- Package tcl.x86_64 1:8.5.7-6.el6 will be installed- Finished Dependency ResolutionInstalled: expect.x86_64 0:5
4、.44.1.15-5.el6_4 Dependency Installed: tcl.x86_64 1:8.5.7-6.el6 1.2 使用expect使用expect创建脚本的方法1)定义脚本执行的shell#!/usr/bin/expect这里定义的是expect可执行文件的链接路径(或真实路径),功能类似于bash等shell功能2)set timeout 30设置超时时间,单位是秒,如果设为timeout -1 意为永不超时3)spawn spawn 是进入expect环境后才能执行的内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。不能直接在默
5、认的shell环境中进行执行主要功能,它主要的功能是给ssh运行进程加个壳,用来传递交互指令。4)expect这里的expect同样是expect的内部命令主要功能:判断输出结果是否包含某项字符串,没有则立即返回,否则就等待一段时间后返回,等待时间通过timeout进行设置5)send执行交互动作,将交互要执行的动作进行输入给交互指令命令字符串结尾要加上r,如果出现异常等待的状态可以进行核查6)exp_continue继续执行接下来的交互操作7)interact执行完后保持交互状态,把控制权交给控制台;如果不加这一项,交互完成会自动退出8)$argvexpect 脚本可以接受从bash传递过来
6、的参数,可以使用 lindex $argv n获得,n从0开始,分别表示第一个,第二个,第三个参数范例1:免密码通过SSH登录服务器rootpanda72 # cat ssh.exp #!/usr/bin/expect#set ipset ipaddress 192.168.20.101#set userset name root#set passwdset passwd 123456#set timeoutset timeout 30#ssh processspawn ssh $name$ipaddress#进行判断expect yes/no send yesr;exp_continue p
7、assword send $passwdr #interactexpect #send useradd xuegod-1705rsend pwdrexpect eofrootpanda72 # chmod +x ssh.exprootpanda72 # ./ssh.exp范例2:实现通过SSH自动登录对服务器进行批量管理1、先写一个SSH自动登录脚本rootxuegod67 opt# cat ssh2.exp #!/usr/bin/expectset ipaddress lindex $argv 0set passwd lindex $argv 1set timeout 3spawn ssh
8、root$ipaddressexpect yes/no send yesr;exp_continuepassword send $passwdr;expect *from*send mkdir -p /tmp/xuegodexpect #expect eof2、准备一个文件用来存放IP地址和密码rootxuegod67 opt# cat passwd.txt 192.168.1.63 rootroot192.168.1.222 rootroot192.168.1.64 1234563、调用ssh2.exp自动登录脚本,来完成批量管理rootxuegod67 opt# cat login.sh
9、#!/bin/bashfor i in awk print $1 /mnt/ip-passwd.txtdoj=grep $i /mnt/ip-passwd.txt |awk print $2expect /mnt/ssh2.exp $i $jdone第2章 正则表达式的使用重要的文本处理工具:vim sed awk grep2.1 概念正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。规定一些特殊语法表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式
10、,这就是正则表达式正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串;u 是指一个用来描述或者匹配一系列符合某个句法规则的字符的那个字符串。 u 用某种模式去匹配一类字符串。u shell元字符(也叫通配符):由shell来解析,如rm rf *.txt,元字符* shell把它解析为任意多个字符u 正则表达式元字符:由各种执行模式匹配操作的程序来解析,比如:vi、grep、sed、awk、python、mysql例如:rootpanda72 mnt# egrep :digit:1,3.:digit:1,3.:digit:1,3.:digit:1,3 ip.txt 172.16
11、.10.110.10.1.15.6.7.8192.168.45.244rootpanda72 mnt# egrep 0-91,3.0-91,3.0-91,3.0-91,3 ip.txt 172.16.10.110.10.1.15.6.7.8192.168.45.244第3章 sedstrem editor 流编辑器3.1 概念sed编辑器是一行一行的处理文件内容的。正在处理的内容存放在模式空间(缓冲区)内,处理完成后按照选项的规定进行输出或文件的修改。sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed
12、命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;sed也是支持正则表达式的,如果要使用扩展正则加参数-r3.2 如何使用语法格式:sed options command filename范例1:将paswd文件中的root替换为awkrootpanda # sed s/root/awk/ passwd newfilename注意:s/././是分隔符,分割符 / 可以用别的符号代替 , 比如 “,” “|” “_“等 .rootpan
13、da mnt# head -10 /etc/passwd a.txt rootpanda mnt# sed s_/bin/bash_/sbin/nologin_ a.txt 显然 , 此时用 _ 作分割符比 / 好得多另外:rootpanda opt# sed #root#cAWK a.txt 直接进行匹配处理,在特殊符号前加斜线声明一下。如果是查找替换则不用范例2:用 & 表示前面匹配的字符串sed 默认只替换搜索字符串的第一次出现 , 利用 /g 可以替换搜索字符串所有范例3:同时替换多项内容:-erootpanda mnt# sed -e 1d -e 2s/sbin/*/ a.txt b
14、in:x:1:1:bin:/bin:/*/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinrootpanda mnt# head -5 /etc/passwd a.txtrootpanda mnt# sed s/root/&/g;s/daemon/g a.txt&:x:0:0:&:/&:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin:x:2:2:/sbin:/sbi
15、n/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinrootpanda mnt# sed -e 3s/nologin/bash/ -e 4s/adm/$/g a.txtroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/bash$:x:3:4:$:/var/$:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 23 expect 正则 表达式 sed 使用
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内