Ruby читать Samba поделиться

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


person mibo    schedule 11.10.2011    source источник
comment
Уважаемый mibo, google.com/ , Любовь, Гугл   -  person muffinista    schedule 12.10.2011
comment
да я нашла. Но так как он не разработан, я подумал, может быть, есть текущий гем.   -  person mibo    schedule 12.10.2011
comment
Sambala работает с ftools, но ftools устарел, начиная с ruby ​​1.9.2. Так что, похоже, это не работает для меня.   -  person mibo    schedule 12.10.2011


Ответы (4)


Драгоценный камень 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
person lottscarson    schedule 12.10.2011
comment
Sambala работает с ftools, но ftools устарел, начиная с ruby ​​1.9.2. Так что, похоже, это не работает для меня. - person mibo; 12.10.2011
comment
В большинстве случаев заменить ftools на fileutils не так уж сложно, поэтому вы можете подумать о разветвлении sambala на github.com/lp/ sambala и обновите его до версии 1.9.2. - person muffinista; 12.10.2011
comment
Да, в самбале нужны не инструменты, а драгоценный камень изобилия, который требуется от самбалы. Было не так просто найти включение ftools, потому что в коде github ftools не будет использоваться. Но в моем местном изобилии драгоценных камней используется одна функция ftool. Но это не работает. я не могу подключиться к своей папке samba. я думаю, что буду использовать ssh и т. д., чтобы получить сетевые ресурсы. В любом случае, большое спасибо. - person mibo; 12.10.2011

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

https://github.com/reivilo/rsmbclient

person reivilo    schedule 04.12.2011
comment
это незавершенная жемчужина целый год спустя. Он не обеспечивает базовую функциональность, о которой идет речь. - person shadowbq; 09.01.2013

Драгоценный камень 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
person shadowbq    schedule 09.01.2013
comment
Версия изобилия GLsignals — 1.3.6, последняя версия от pl (первоначального автора) — 1.3.5. - person shadowbq; 09.01.2013
comment
Версия самбалы GLSignals – 0.9.9, а pl – 0.9.8. - person shadowbq; 09.01.2013

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
person user43957    schedule 01.05.2019