0
votes

Ruby Net :: Ssh Réduse Session

J'ai quelques méthodes qui font cela:

def method_a
    Net::SSH.start(...) do |ssh|
    end
end

def method_b
    Net::SSH.start(...) do |ssh|
    end
end
def method_c
    Net::SSH.start(...) do |ssh|
    end
end


0 commentaires

3 Réponses :


0
votes

Oui, vous pouvez définitivement le faire sécher.

Vous pouvez ajouter une méthode qui accepte un nom d'hôte pour la connexion NET :: SSH comme ci-dessous: P>

def ssh_exec(hostname)

  Net::SSH.start( hostname, 'user', :timeout => 5, :paranoid => false ) do |ssh|

   ....
  end
end


1 commentaires

merci mais je réachère ma question à être plus claire. Votre solution ne fonctionne pas depuis chaque méthode SSH Block exécute différentes choses. Aussi, il ne s'agit pas de faire du code à sec, c'est à propos de la réutilisation de la session SSH pour toutes les 3 sessions



0
votes

Le moyen d'aller en net :: ssh consiste à mettre xxx

à une variable, puis sur chaque méthode xxx

et Bien sûr, je placerai tout ce qui précède dans une classe, afin que je puisse initialiser et démarrer une session SSH et exécuter des commandes sans rétablir SSH.


0 commentaires

0
votes

En dehors d'une classe, vous pouvez essayer: xxx pré>

Si c'est dans une classe, vous pouvez définir `attr_reader: ssh` puis l'initialiser ainsi: P>

def method_a
  ssh.exec(...)
end


1 commentaires

@ydanjiu, votre deuxième méthode, dans une classe est ce que j'ai déjà répondu. Mais pour la première méthode. L'appel appelle toutes les 3 méthodes qui ne sont pas ce que je veux atteindre.