为了网站的安全,一般服务器是不会安装ftp的,更不会针对windows客户端安装类似rz等软件。一般都是 scp,scp是有Security的文件copy,基于ssh登录。那怎么能够实现自动上传和执行文件呢。那就必须使用Expect的spawn了。
Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect的作者Don Libes在1990年 开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件 (Expect [is a] software suite for automating interactive tools)。使用它系统管理员 的可以创建脚本用来实现对命令或程序提供输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些输入都需要手工输入进行的。 Expect则可以根据程序的提示模拟标准输入提供给程序需要的输入来实现交互程序执行。甚至可以实现实现简单的BBS聊天机器人。
举个例子
#!/usr/bin/expect
/usr/bin/expect <<-EOF
spawn /usr/bin/ssh root@$1
expect "*password:"
send "$2\r"
expect "*]#"
send "/root/testAppSSHDeploy.sh\r"
expect "*]#"
send "exit\r"
此脚本通过输入ip地址和密码进行登录,并进行执行自动部署脚本。
如果是两个服务器之间进行执行。比如打包服务器和正式服务器需要进行文件的上传和部署,可以使用密钥进行文件的上传和登录部署。
命令如下
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub root@目标ip:/root/.ssh/authorized_keys