本节所讲内容:
案例1:自动备份Mariadb脚本
实战:
1、自动备份mariadb脚本
需要做准备:登录到服务器上
安装mariadb-server
开启mariadb-server
[root@localhost ~]# yum-y install mariadb mariadb-server
软件包mariadb #mariadb数据库Linux下的客户端
软件包mariadb-server#mariadb数据库
[root@localhost ~]#systemctl start mariadb
[root@localhost ~]# rpm-qf `which mysql`
mariadb-5.5.41-2.el7_0.x86_64
[root@localhost ~]# mysql
Welcome to the MariaDBmonitor. Commands end with ; or \g.
Your MariaDB connectionid is 2
Server version:5.5.41-MariaDB MariaDB Server
Copyright (c) 2000, 2014,Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' forhelp. Type '\c' to clear the current input statement.
MariaDB [(none)]> showdatabases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.01 sec)
MariaDB [(none)]>exit;
Bye
备份脚本:
说明:
find . -type f -name *.sql |xargs rm -rf
xargs 构造参数列表并运行命令
sh -x 调试脚本
自动解压ZIP数据包 脚本
如下脚本为自动解压zip包脚本,仅供参考,可以根据实际情况修改,可以举一反三,应用到其他的应用中。
awk -F. '{print $2}' #awk 列操作
-F. 以.作为分隔符
print 输入
$2 表示每2列
实战:expect实现无交互登录
expect是在tcl基础上创建起来的,它还提供了一些tcl所没有的命令,它可以用来做一些linux下无法做到交互的一些命令操作
安装expect
[root@xuegod163 ~]# yum -yinstall expect
也可以通过源码包的方式进行安装
×××链接
http://jaist.dl.sourceforge.net/project/tcl/Tcl/8.6.4/tcl8.6.4-src.tar.gz
http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download
使用expect创建脚本的方法
1)定义脚本执行的shell
#!/usr/bin/expect
这里定义的是expect可执行文件的链接路径(或真实路径),功能类似于bash等shell功能
2)set timeout 30
设置超时时间,单位是秒,如果设为timeout -1 意为永不超时
3)spawn
spawn 是进入expect环境后才能执行的内部命令,不能直接在默认的shell环境中进行执行
主要功能:传递交互指令
4)expect
这里的expect同样是expect的内部命令
主要功能:判断输出结果是否包含某项字符串,没有则立即返回,否则就等待一段时间后返回,等待时间通过timeout进行设置
5)send
执行交互动作,将交互要执行的动作进行输入给交互指令
命令字符串结尾要加上"r",如果出现异常等待的状态可以进行核查
6)interact
执行完后保持交互状态,把控制权交给控制台
如果不加这一项,交互完成会自动退出
7)exp_continue
继续执行接下来的交互操作
8)$argv
expect 脚本可以接受从bash传递过来的参数,可以使用 [lindex $argv n]获得,n从0开始,分别表示第一个,第二个,第三个……参数
实战:通过expect实现无交互式ssh远程登录
[root@localhost ~]# vimssh.exp
#!/usr/bin/expect
set ipaddress"192.168.1.69"
set passwd"123456"
set timeout 30
spawn ssh rm@$ipaddress
expect {
"yes/no" { send"yes\r";exp_continue }
"password:" {send "$passwd\r" }
}
interact
执行结果:
[root@localhost ~]#./ssh.exp
spawn ssh [email protected]
[email protected]'s password:
2)通过调用bash的位置参数实现ssh远程登录
[root@localhost ~]# vimssh2.exp
#!/usr/bin/expect
set ipaddress [ lindex$argv 0 ]
set passwd [ lindex $argv1 ]
set user [ lindex $argv 2]
set timeout 30
spawn ssh$user@$ipaddress
expect {
"yes/no" { send"yes\r";exp_continue }
"password:" {send "$passwd\r" }
}
interact
执行结果
[root@localhost ~]#./ssh2.exp 192.168.1.69 123456 root
spawn [email protected]
[email protected]'spassword:
Last login: Wed Dec 3021:47:25 2015 from 192.168.1.68
学习过程中如果问题,请留言。更多内容请加:
学神IT-linux讲师-RM老师QQ:2805537762
学神IT-戚老师QQ:3341251313
学神IT-旭斌QQ:372469347
学神IT教育RHEL7交流群:468845589