SyntaxError: net-sftp.rb: 48: синтаксическая ошибка, непредвиденная ошибка. TCONSTANT помещает «Завершение передачи файла» в Ruby с клиента Filezilla на localhost. - PullRequest
0 голосов
/ 04 сентября 2018

Я выполняю тестирование автоматизации, запустив 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

1 Ответ

0 голосов
/ 06 сентября 2018

Следующий код, написанный ниже, помог мне установить соединение между Filezilla и ConEmu, но теперь мне нужно попасть в папку ClaimCenter, чтобы просмотреть файлы, если они существуют или нет

require "net/ssh"
require "net/sftp"

@hostname = "server"
@username = "admin"
@password = "password1"
@cmd = "ls -la"

res = ""
ssh = Net::SSH.start(@hostname, @username, password: @password) do |ssh|
res = ssh.exec!(@cmd)
 end

puts res
...