Ubuntu 16.04.7 LTS (Xenial Xerus) ruby 2.5.0p0
Führen Sie nach dem Übertragen des Ruby-Programms auf den durch Port Forward angegebenen Server das Ruby-Programm auf dem Übertragungszielserver aus und geben Sie die CSV-Datei standardmäßig aus. Bringen Sie dann die Standard-Ausgabe-CSV-Datei in Ihre lokale Umgebung.
def ssh_connect
begin
#Dateien übertragen
_cmd = system('scp -P 54322 -i /home/.ssh/id_rsa /home/syori.rb [email protected]:/home')
#Port Forward-Einstellungen
Net::SSH.start(
'153.153.xx.xx',
'username',
:keys => '/home/.ssh/id_rsa',
:port => 54322
) do |_a|
_a.forward.local(2222,'192.168.xx.xx', 54323)
_a.exec!('ruby syori.rb')
end
#Holen Sie sich die Datei
_cmd = system('scp -P 54322 -i /home/.ssh/id_rsa [email protected]:/home/users.csv /home')
rescue => ex
print "***** " + self.class.name.to_s + "." + __method__.to_s + " *****\n"
print(ex.class," -> ",ex.message)
end
end
system Eine Methode, die Linux-Befehle in Ruby ausgibt. Der Rückgabewert ist ture / false.
scp Dies ist ein Befehl (Protokoll) zum Übertragen von Dateien. Wenn es um die Dateiübertragung geht, wurde in der Vergangenheit häufig FTP verwendet. Da FTP die Kontoinformationen beim Anmelden jedoch nicht verschlüsseln kann, verwenden Sie scp, das standardmäßig mit der SSH-Funktion ausgestattet ist, um die Sicherheit zu verbessern. Ist die Basis.
-P Geben Sie die Portnummer an. Die SSH-Portnummer 22 wird als bekannte Portnummer angegeben. Wenn es sich jedoch um einen nach außen geöffneten Server handelt, kann er meiner Meinung nach angepasst werden, um seltsame Angriffe zu verhindern. Geben Sie die SSH-Portnummer des Servers an, zu dem eine Verbindung hergestellt werden soll.
-i Legen Sie den absoluten Pfad auf den Pfad fest, in dem der für die SSH-Kommunikation verwendete öffentliche Schlüssel gespeichert ist. Meistens in Ihrem Haus .ssh.
Legen Sie den Namen der zu übertragenden Datei mit einem absoluten Pfad fest. Geben Sie zum Angeben des Übertragungsziels den Servernamen des Übertragungsziels an: das Verzeichnis des Übertragungsziels mit einem absoluten Pfad.
Net::SSH.start(
Quell-IP-Adresse weiterleiten,
Benutzername weiterleiten,
:keys =>Absoluter Pfad des privaten Schlüssels der Verbindungsquelle,
:port =>Portnummer der Verbindungsquelle
) do |_a|
_a.forward.local(Quellportnummer weiterleiten (alles ist in Ordnung),
'IP-Adresse des Portweiterleitungsziels',
Zielportnummer weiterleiten)
_a.exec!('Der Befehl, den Sie am Verbindungsziel ausführen möchten')
end
Recommended Posts