Я выполняю тестирование автоматизации, запустив JRuby с ConEmu, чтобы поместить файлы из моего клиента Filezila на мой локальный хост. Это не должно быть на удаленном сервере. Получение ошибок при попытке запустить приведенный ниже код на Ruby для установления соединения. Передача файлов здесь не так важна.
Извинения: Скоро исправлю.
require 'net-ssh'
require 'net-sftp'
require 'dir'
local_path = 'D:\Rubynetssh'
remote_path = '/cguclaim/virtual/data/logs/gwlogs/ClaimCenter/'
file_perm = 0644
dir_perm = 0755
puts 'Connecting to remote server'
Net::SSH.start('server', 'admin', 'password1') do |ssh|
ssh.sftp.connect do |sftp|
puts 'Checking for files which need updating'
Find.find(local_path) do |file|
next if File.stat(file).directory?
local_file = "#{dir}/#{file}"
remote_file = remote_path + local_file.sub(local_path, '')
begin
remote_dir = File.dirname(remote_file)
sftp.stat(remote_dir)
rescue Net::SFTP::Operations::StatusException => e
raise unless e.code == 2
sftp.mkdir(remote_dir, :permissions => dir_perm)
end
begin
rstat = sftp.stat(remote_file)
rescue Net::SFTP::Operations::StatusException => e
raise unless e.code == 2
sftp.put_file(local_file, remote_file)
sftp.setstat(remote_file, :permissions => file_perm)
next
end
if File.stat(local_file).mtime > Time.at(rstat.mtime)
puts "Copying #{local_file} to #{remote_file}"
sftp.put_file(local_file, remote_file)
end
end
end
puts 'Disconnecting from remote server'
end
puts 'File transfer complete'
Когда я запускаю команду ниже
jruby net-sftp.rb
это приводит к синтаксису этой ошибки
SyntaxError: net-sftp.rb: 48: синтаксическая ошибка, непредвиденный tCONSTANT устанавливает «Передача файла завершена»
* РЕДАКТИРОВАТЬ *
*** Теперь, когда вы ввели код в комментарий, он выглядит как ошибка, как показано ниже:
1. LoadError: no such file to load -- net-ssh
2. require at org/jruby/RubyKernel.java:939
3. require at
4. C:/jruby-9.0.4.0/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:54
5. <top> at net-sftp.rb:1