Руби читать самбу поделиться - PullRequest
5 голосов
/ 12 октября 2011

Я ищу способ чтения из общего ресурса самбы.Я хочу использовать его как класс Dir, например, открывать и читать каталоги.Возможно ли это в Ruby?

Ответы [ 4 ]

3 голосов
/ 12 октября 2011

Драгоценный камень Sambala должен работать для вас, если ваша хост-система представляет собой систему Posix (UNIX-подобную) (не уверен в Windows ...):

gem install sambala

Этот гем будет работать до тех пор, пока в вашей хост-операционной системе есть рабочий исполняемый файл smbclient где-то в вашем $ PATH. Пока вы используете Mac OS X, Linux или какой-либо другой вариант UNIX, вы сможете запускать следующую команду из терминала, чтобы увидеть, есть ли у вас smbclient где-то на вашем пути:

which smbclient

Если вы не получили результат, выполните поиск в Google, чтобы узнать, как получить smbclient для вашей текущей операционной системы. Если вы работаете в Mac OS X, вы можете просто установить MacPorts и затем запустить следующую команду из терминала, чтобы установить smbclient:

sudo port install samba3
1 голос
/ 04 декабря 2011

Я думаю, вы можете попробовать проверить мой драгоценный камень, я запустил его, потому что у меня те же проблемы с самбалой

https://github.com/reivilo/rsmbclient

0 голосов
/ 01 мая 2019

Ruby_SMB является собственной реализацией Ruby семейства протоколов SMB.

Из README :

  sock = TCPSocket.new address, 445
  dispatcher = RubySMB::Dispatcher::Socket.new(sock)

  client = RubySMB::Client.new(dispatcher, username: 'msfadmin', password: 'msfadmin')
  client.negotiate
  client.authenticate

  begin
    tree = client.tree_connect('TEST_SHARE')
    puts "Connected to #{path} successfully!"
  rescue StandardError => e
    puts "Failed to connect to #{path}: #{e.message}"
  end

  files = tree.list(directory: 'subdir1')

  files.each do |file|
    create_time = file.create_time.to_datetime.to_s
    access_time = file.last_access.to_datetime.to_s
    change_time = file.last_change.to_datetime.to_s
    file_name   = file.file_name.encode("UTF-8")

    puts "FILE: #{file_name}\n\tSIZE(BYTES):#{file.end_of_file}\n\tSIZE_ON_DISK(BYTES):#{file.allocation_size}\n\tCREATED:#{create_time}\n\tACCESSED:#{access_time}\n\tCHANGED:#{change_time}\n\n"
  end
0 голосов
/ 09 января 2013

Gem Sambala будет работать для реализаций Ruby 1.8.x в системе Posix (UNIX-подобной)

gem install sambala

Для 1.9.x Ruby на Posix используйте вилку GLSIGNAL.

git clone https://github.com/glsignal/sambala.git
cd sambala
gem build samabala
gem install ./sambala.gem

Примечание. В геме GLSignal используется источник изобилия github, который пропатчен для запуска на 1.9.x

Как утверждает lottscarson, эти гемы будут работать до тех пор, пока у вашей операционной системы есть работающий исполняемый файл smbclient где-то в вашем $ PATH. Пока вы используете Mac OS X, Linux или какой-либо другой вариант Posix, вы сможете запускать следующую команду из терминала, чтобы увидеть, есть ли у вас smbclient где-то на вашем пути:

which smbclient

Если вы не получите результат, выполните поиск в Google, чтобы узнать, как получить smbclient для вашей текущей операционной системы. (примеры)

(RHEL/CENTOS/etc) yum install samba

(ubuntu/debian) sudo apt-get install samba smbfs

(osx) brew install samba

В качестве альтернативы обертке для smbclient вы можете использовать рубиновый гем расширения C под названием net-smb. Это требует собственной компиляции и не написано чисто ruby.

gem install net-smb

Это также требует нескольких вещей.

Ruby 1.9.3+
Samba 3.5+ (libsmbclient)
C compiler

Примеры установки

sudo apt-get install libsmbclient libsmbclient-dev
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...