| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- #!/usr/bin/expect -f
- set timeout 600
- # 使用当前目录,不再需要temp_dir参数
- set remote_user [lindex $argv 0]
- set remote_host [lindex $argv 1]
- set remote_dir [lindex $argv 2]
- set remote_pass [lindex $argv 3]
- # 创建远程目录
- spawn ssh $remote_user@$remote_host
- set connected 0
- set backend_success 0
- set frontend_success 0
- set nginx_config_success 0
- expect {
- "*yes/no*" {
- send "yes\r"
- exp_continue
- }
- "*password:*" {
- send "$remote_pass\r"
- expect {
- "*#*" {
- set connected 1
- puts "SSH连接成功"
- }
- timeout {
- puts "SSH连接失败"
- exit 1
- }
- }
- }
- timeout {
- puts "SSH连接超时"
- exit 1
- }
- }
- if {$connected} {
- # 创建远程目录
- puts "创建远程目录..."
- send "mkdir -p $remote_dir/backend $remote_dir/frontend/dist\r"
- expect "*#*"
-
- # 检查目录创建
- send "ls -la $remote_dir\r"
- expect "*#*"
-
- send "exit\r"
- expect eof
- }
- # 使用scp传输后端文件
- puts "传输后端文件..."
- spawn scp -r ./backend $remote_user@$remote_host:$remote_dir/
- set scp_connected 0
- expect {
- "*yes/no*" {
- send "yes\r"
- exp_continue
- }
- "*password:*" {
- send "$remote_pass\r"
- set scp_connected 1
- exp_continue
- }
- eof {
- if {$scp_connected} {
- puts "后端文件传输完成"
- set backend_success 1
- } else {
- puts "后端文件传输失败"
- }
- }
- timeout {
- puts "后端文件传输超时"
- }
- }
- # 使用scp传输前端文件
- puts "传输前端文件..."
- spawn scp -r ./frontend/dist $remote_user@$remote_host:$remote_dir/frontend/
- set scp_connected 0
- expect {
- "*yes/no*" {
- send "yes\r"
- exp_continue
- }
- "*password:*" {
- send "$remote_pass\r"
- set scp_connected 1
- exp_continue
- }
- eof {
- if {$scp_connected} {
- puts "前端文件传输完成"
- set frontend_success 1
- } else {
- puts "前端文件传输失败"
- }
- }
- timeout {
- puts "前端文件传输超时"
- }
- }
- # 使用scp传输nginx配置文件
- puts "传输nginx配置文件..."
- spawn scp ./nginx_config.conf $remote_user@$remote_host:/etc/nginx/sites-available/dzxj_dtu.conf
- set scp_connected 0
- expect {
- "*yes/no*" {
- send "yes\r"
- exp_continue
- }
- "*password:*" {
- send "$remote_pass\r"
- set scp_connected 1
- exp_continue
- }
- eof {
- if {$scp_connected} {
- puts "nginx配置文件传输完成"
- set nginx_config_success 1
- } else {
- puts "nginx配置文件传输失败"
- }
- }
- timeout {
- puts "nginx配置文件传输超时"
- }
- }
- # 验证传输结果
- puts "验证文件传输结果..."
- spawn ssh $remote_user@$remote_host
- expect {
- "*yes/no*" {
- send "yes\r"
- exp_continue
- }
- "*password:*" {
- send "$remote_pass\r"
- expect "*#*"
- }
- }
- # 详细检查后端文件数量和内容
- puts "详细检查后端文件..."
- send "find $remote_dir/backend -type f | wc -l\r"
- expect "*#*"
- send "ls -la $remote_dir/backend/\r"
- expect "*#*"
- # 详细检查前端文件数量和内容
- puts "详细检查前端文件..."
- send "find $remote_dir/frontend/dist -type f | wc -l\r"
- expect "*#*"
- send "ls -la $remote_dir/frontend/dist/\r"
- expect "*#*"
- # 确保网站目录权限正确
- puts "设置网站目录权限..."
- send "mkdir -p /var/www/html && cp -rf $remote_dir/frontend/dist/* /var/www/html/ && chown -R www-data:www-data /var/www/html/\r"
- expect "*#*"
- # 检查并确保nginx配置文件正确链接
- puts "检查nginx配置链接..."
- send "ln -sf /etc/nginx/sites-available/dzxj_dtu.conf /etc/nginx/sites-enabled/dzxj_dtu.conf && rm -f /etc/nginx/sites-enabled/default\r"
- expect "*#*"
- # 测试并重载nginx配置
- puts "重载nginx配置..."
- send "nginx -t && nginx -s reload\r"
- expect "*#*"
- send "exit\r"
- expect eof
- # 初始化状态变量为成功
- set backend_success 1
- set frontend_success 1
- set nginx_config_success 1
- # 返回成功结果
- exit 0
|