原创内容,转载请注明出处:https://www.myzhenai.com.cn/post/1932.html https://www.myzhenai.com/thread-17373-1-1.html
很多使用Linux做为服务器的站长朋友们可能都想知道如何在备份服务器数据的时候能给压缩包加上压缩密码增加数据的安全性.但是在Linux下使用RAR压缩软件的教程很少,千篇一律都是解释官方的使用命令和参数.可是使用unzip和tar以及gzip等压缩的时候是不能添加密码和注释的.现在我们就以RAR软件来演示如何编写一个利用expect自动控制的脚本教程.
Linux下RAR的安装方法:https://www.myzhenai.com/thread-15509-1-1.html https://www.myzhenai.com.cn/post/1040.html
Linux下自动备份网站数据并上传的脚本代码:https://www.myzhenai.com.cn/post/1819.html https://www.myzhenai.com/thread-16228-1-1.html
只要将自动备份网站数据并上传的脚本代码里的脚本适当的修改,就可以实现这些目的了.
因为我自己有几台Linux的服务器需要管理,有时候管理的时候需要ssh手动登录并执行相应代码,操作非常繁锁,于是想到自动化脚本,写一个一键管理的脚本,以后只要运行相应的脚本就可以管理对应的服务器,这样的效率就会高很多了,本来Linux上有一个shell脚本,但是执行它还是需要手动登录ssh,能不能自动登录ssh呢? 我查找了网上很多资料,有的人说用ssh-keygen管理方便,但缺点是需要在本地保存Key验证码.于是便选择了expect来实现.方法也非常简单.
expect是Unix系统中用来进行自动化控制和测试的软件工具,由Don Libes制作,作为Tcl脚本语言的一个扩展,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。该工具利用Unix伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制;也可利用Tk工具,将交互程序包装在X11的图形用户界面中。
我们通过Shell可以实现简单的控制流功能,如:循环、判断等。但是对于需要交互的场合则必须通过人工来干预,比如普通用户使用sudo命令时就需要我们手动输入密码;expect就是能够完成这种自动交互任务,而无需人的干预。Expect的作者Don Libes在1990年开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件(Expect [is a] software suite for automating interactive tools)。系统管理员可以使用它创建用来实现对命令或程序提供输入的脚本:一般来说这些输入都需要手工输入(比如之前提到的执行sudo程序期望用户从终端输入用户密码)进行的,Expect则可以根据程序的提示 模拟标准输入给程序提供信息来实现交互程序执行。
expect和sh的shell脚本不一样,expect是以 #!/usr/bin/expect 开始,而sh则是以# !/bin/bash开始.使用之前需要安装expect. 这里用到的只是expect的几个命令,expect,spawn和send. 回车符号分别是\r \n