14.11. Kopiowanie plików do innego komputera

Problem

Potrzebny jest programowy sposób przesyłania plików do innego komputera, podobny do uniksowego polecenia scp.

Rozwiązanie

Można wykorzystać bibliotekę Net:SSH w celu nawiązania bezpiecznego połączenia z powłoką innego komputera. Następnie można uruchomić proces cat na zdalnym komputerze i zapisać plik, który chcemy skopiować, do jego standardowego strumienia wejściowego.

require 'rubygems' require 'net/ssh' def copy_file(session, source_path, destination_path=nil) destination_path ||= source_path cmd = %{cat > "#{destination_path.gsub('"', '\"')}"} session.process.popen3(cmd) do |i, o, e| puts "Kopiowanie #{source_path} do #{destination_path}... " open(source_path) { |f| i.write(f.read) ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.