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.