Я должен выполнить команду оболочки через сценарий ruby на нескольких серверах, где сценарий ruby будет выполнять S SH на сервере и затем запускать его. Я могу запустить скрипт до назначения переменных на удаленном компьютере, а затем выдает неправильные результаты, потому что назначение переменных в строке 15 не работает. Ниже приведен код:
1:require 'open3'
2:require 'net/ssh'
3:require 'fileutils'
4:HOME_PATH = "/road/street/home/"
5:HOME_TAR_FILE = "#{HOME_PATH}/dinner.tar.gz"
6:HOME_REPO = "/road/xyz/abc/dinner.tar.gz"
7:HOME_SOFT = "#{HOME_PATH}home-latest"
8:def home_build_processing(server,user)
9: Net::SSH.start(server, user) do |ssh|
10: ssh.exec!("scp server123:#{HOME_REPO} #{HOME_PATH}")
11: puts "************** Download Completed ****************"
12: ssh.exec!("tar -C #{HOME_PATH} -xvzf #{HOME_TAR_FILE}")
13: ssh.exec!("rm -rf #{HOME_TAR_FILE}")
14: ssh.exec!("cd #{HOME_PATH}; home_latest=$(ls -td -- */ | head -n 1 | cut -d'/' -f1)")
15: ssh.exec!("cd #{HOME_PATH}; home_version=$(echo $home_latest'_'$(date +%Y-%m-%d))")
16: ssh.exec!("cd #{HOME_PATH}; mv $home_latest $home_version")
17: puts "************** Processing Symlink**********************"
18: ssh.exec!("cd #{HOME_PATH}; ln -sfnv $home_version #{HOME_SOFT}")
19: end
20: end
home_build_processing(server1,user1)
home_build_processing(server2,user2)
Ошибка: строка 15 home_latest не имеет значения