Ubuntu 16.04.7 LTS (Xenial Xerus) ruby 2.5.0p0
Après avoir transféré le programme Ruby vers le serveur spécifié par la redirection de port, exécutez le programme Ruby sur le serveur de destination du transfert et sortez le fichier csv en standard. Ensuite, apportez le fichier csv de sortie standard à votre environnement local.
def ssh_connect
begin
#Transférer des fichiers
_cmd = system('scp -P 54322 -i /home/.ssh/id_rsa /home/syori.rb [email protected]:/home')
#Paramètres de transfert de port
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
#Obtenez le fichier
_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 Une méthode qui émet des commandes Linux dans Ruby. La valeur de retour est ture / false.
scp Il s'agit d'une commande (protocole) de transfert de fichiers. En ce qui concerne le transfert de fichiers, je pense que ftp était souvent utilisé dans le passé, mais comme ftp ne peut pas crypter les informations du compte lors de la connexion, utilisez scp, qui est équipé de la fonction SSH en standard, pour améliorer la sécurité. Est la base.
-P Spécifiez le numéro de port. Le numéro de port SSH 22 est spécifié comme un numéro de port bien connu, mais s'il s'agit d'un serveur ouvert sur l'extérieur, je pense qu'il peut être personnalisé pour éviter des attaques étranges. Spécifiez le numéro de port SSH du serveur auquel se connecter.
-i Définissez le chemin absolu vers le chemin où la clé publique utilisée pour la communication SSH est stockée. Principalement situé dans votre maison .ssh.
Définissez le nom du fichier à transférer avec un chemin absolu. Pour spécifier la destination du transfert, spécifiez le nom du serveur de la destination du transfert: le répertoire de la destination du transfert avec un chemin absolu.
Net::SSH.start(
Transférer l'adresse IP source,
Nom d'utilisateur de transfert,
:keys =>Chemin absolu de la clé privée de la source de connexion,
:port =>Numéro de port de la source de connexion
) do |_a|
_a.forward.local(Transférer le numéro de port source (tout va bien),
'Adresse IP de la destination de transfert de port',
Transférer le numéro de port de destination)
_a.exec!('La commande que vous souhaitez exécuter à la destination de la connexion')
end
Recommended Posts