Connectez-vous à vos serveurs facilement avec Ruby et SSH

9
1

Automatiser vos⁤ serveurs : Un guide ‌pratique pour‌ se connecter​ en SSH avec Ruby (Partie 2)

Dans la première partie de ce guide, nous avons vu comment ‍utiliser Ruby pour se connecter en SSH à un‌ serveur et exécuter une commande simple. Le hic ? Les informations ⁣de connexion et la commande étaient figées dans le code.

Pas ‌très pratique pour automatiser plusieurs serveurs,⁢ n’est-ce pas ?

C’est là⁣ que‌ la magie des arguments en ligne de commande entre ​en jeu ! Dans cette deuxième ⁢partie,​ on vous‌ montre comment rendre votre ‍script Ruby plus flexible et puissant.

Libérez la puissance‌ des arguments en ligne de commande

Imaginez​ : un seul script pour⁣ gérer​ tous⁤ vos serveurs⁢ ! En utilisant⁤ les⁣ arguments en ligne de commande, vous pouvez spécifier​ l’hôte, le nom d’utilisateur, le mot de passe et la commande à exécuter directement lors de l’appel ‌du script.

Fini​ la modification du code à chaque connexion !

Voici‌ comment‌ faire :

require 'rubygems'
require 'net/ssh'
require 'optparse'

# On crée un objet OptionParser pour gérer les arguments
opts = OptionParser.new

# On définit les options possibles
opts.on("-h HOSTNAME", "--hostname NAME", String, "Nom d'hôte du serveur") { |v| @hostname = v }
opts.on("-u SSH USERNAME", "--username SSH USERNAME", String, "Nom d'utilisateur SSH") { |v| @username = v }
opts.on("-p SSH PASSWORD", "--password SSH PASSWORD", String, "Mot de passe SSH") { |v| @password = v }
opts.on("-c SHELL_COMMAND", "--command SHELL_COMMAND", String, "Commande à exécuter") { |v| @cmd = v }

# On analyse les arguments passés en ligne de commande
begin
  opts.parse!(ARGV)
rescue OptionParser::ParseError => e
  puts e
end

# On vérifie que tous les arguments obligatoires sont présents
raise OptionParser::MissingArgument, "Nom d'hôte manquant [-h]" if @hostname.nil?
raise OptionParser::MissingArgument, "Nom d'utilisateur SSH manquant [-u]" if @username.nil?
raise OptionParser::MissingArgument, "Mot de passe SSH manquant [-p]" if @password.nil?
raise OptionParser::MissingArgument, "Commande à exécuter manquante [-c]" if @cmd.nil?

# On se connecte au serveur et on exécute la commande
begin
    ssh = Net::SSH.start(@hostname, @username, :password => @password)
    res = ssh.exec!(@cmd)
    ssh.close
    puts res
  rescue
    puts "Impossible de se connecter à #{@hostname} avec #{@username}/#{@password}"
  end

Exemple d’utilisation

Pour exécuter ​le script et lister le contenu du répertoire courant sur le ​serveur “monServeur” avec l’utilisateur “admin”, utilisez⁤ la commande suivante :

ruby mon_script.rb -h monServeur -u admin -p monMotDePasse -c "ls -al"

Un pas de plus vers​ l’automatisation

Ce ⁢script amélioré vous permet ‍de gérer vos serveurs à⁤ distance de manière plus efficace. N’hésitez pas à l’adapter à vos besoins spécifiques en modifiant la commande à ⁢exécuter ou en ajoutant de nouvelles options.

Astuce de pro: Pour encore plus de sécurité, ‌envisagez d’utiliser des‌ clés SSH au lieu de stocker le mot de passe en clair⁤ dans votre script.

Envie d’aller plus loin dans ‌l’automatisation avec Ruby ? Découvrez comment utiliser des bibliothèques comme⁢ “Fabric” ou⁤ “Capistrano” pour déployer vos applications web en​ un clin d’œil !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

One thought on “Connectez-vous à vos serveurs facilement avec Ruby et SSH