Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1948 connectés 

  FORUM HardWare.fr
  Systèmes & Réseaux Pro
  Réseaux

  Automatisation de connexions SSH & injection de commandes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Automatisation de connexions SSH & injection de commandes

n°135279
the_skwi
Posté le 28-10-2015 à 14:02:47  profilanswer
 

Bonjour,
 
J'ai une liste d'@IP de switchs sur lesquels je souhaiterais me connecter automatiquement, faire un enable/sh conf et d'autres show.
J'utilise MremoteNG pour avoir l'arborescence de mes sites, et j'ai paramétré putty pour qu'il me créé un fichier de log de tout ce qui se passe sur mon équipement/ma session.
 
Ce qu'il me manque c'est :
1/ Pouvoir donner une liste @IP et qu'il lance la session SSH
2/ Pouvoir injecter des lignes de commandes dans ces sessions.
 
Quelqu'un aurait une idée de comment faire/quel langage?
 
Merci merci.

mood
Publicité
Posté le 28-10-2015 à 14:02:47  profilanswer
 

n°135282
_lael_
Posté le 28-10-2015 à 14:36:38  profilanswer
 

python ou perl + librairie Expect je dirais
 
Tu peux facilement gérer l'input / output sur des sessions SSH avec.

n°135289
npuel
Posté le 28-10-2015 à 17:20:40  profilanswer
 

à l'arrache :  
 
for this_IP in $IP_list
do
cat the_script | ssh user@$this_IP
done
 
 
y'a même une grosse marge d'évolution pour faire plus propre et utiliser éventellement un tableau "ip-login-password" si c'est pas toujours pareil

n°135290
the_skwi
Posté le 28-10-2015 à 17:53:11  profilanswer
 

Oublié de préciser que je suis sous windows :p
Y'a moyen de faire ça avec un petit batch/vbscript?

n°135295
nex84
Dura lex, sed lex
Posté le 29-10-2015 à 09:15:14  profilanswer
 

the_skwi a écrit :

Oublié de préciser que je suis sous windows :p
Y'a moyen de faire ça avec un petit batch/vbscript?


Le ssh apparait en Powershell 5 de mémoire.
Sinon tu peux utiliser le plink.exe de putty.


---------------
#TeamNoBidouille || Come to the Dark Side, we have cookies || Mangez 5 fruits et légumes par an ! || Le digital, c'est les doigts
n°135297
_lael_
Posté le 29-10-2015 à 11:23:33  profilanswer
 

Perl et python sont cross platform hein, dire que t'es sous windows c'est pas une excuse :p
 
Ils existent en version portable également, donc pas besoin de les installer, il suffit de leur créer un répertoire n'importe où et de éventuellement modifier ta variable d’environnement %PATH% ou alors appeler l'exécutable par son path complet.

n°135298
the_skwi
Posté le 29-10-2015 à 12:22:45  profilanswer
 

Yep lael merci, c'était plus en réponse à npuel qui ressemblait plutôt à un p'tit script linux.
 
Je vais suivre un tuto pour faire un petit truc en python ou perl, si c'est aussi simple que tu le dis (un dossier avec une var à changer) ça va m'être très pratique :)
Deux questions :
Quel langage entre perl et python est le plus adapté à ma demande?
La bibli Expect existe pour perl, je vois que pour python ça semble être pexpect, tu confirmes?
 
Si besoin j'irai sur la partie programmation du forum pour poser des questions plus pointues.
 
J'ai ma réponse principale en tout cas, donc oui c'est possible via du python et/ou perl. Merci :)

n°135301
steph1066
Posté le 29-10-2015 à 16:51:11  profilanswer
 

Il y a fabric qui peux faire ça, c'est du python
http://www.fabfile.org/
exemple code:
from fabric.api import *
 
def mesCommandes():
    run('ls')
    run('touch /toto')
    sudo('echo "test" >> /etc/resolv.conf')
 
ensuite
fab -f monScript.py mesCommandes -u root -H IP1,IP2...

n°135307
ChaTTon2
Je l'aime !
Posté le 30-10-2015 à 08:05:50  profilanswer
 

the_skwi a écrit :

Oublié de préciser que je suis sous windows :p
Y'a moyen de faire ça avec un petit batch/vbscript?

J'ai confie une tâche similaire a un petit jeune au boulot il y a peu. Le temps d'arriver au boulot et je te le copierais ici.
 
Faudra être indulgent ... Le petit jeune commence sa carrière et le script est certainement pas/peu commenté et peu optimisé.
 
On s'en était servi pour faire une conf de masse.


---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
n°135308
ChaTTon2
Je l'aime !
Posté le 30-10-2015 à 08:08:21  profilanswer
 

Petite precision ... C'est du powershell  :o


---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
mood
Publicité
Posté le 30-10-2015 à 08:08:21  profilanswer
 

n°135311
the_skwi
Posté le 30-10-2015 à 08:55:07  profilanswer
 

Je suis preneur, je suis débutant également dans ce domaine, j'adapterais ça à mon besoin :)
 
Merci

n°135315
Power Nabo​t
Verticalement désavantagé.
Posté le 30-10-2015 à 10:36:48  profilanswer
 

PSSH ?


---------------
Encore une victoire de canard !
n°135318
nebulios
Posté le 30-10-2015 à 12:28:18  profilanswer
 

Invoke-Command aussi

n°135323
ChaTTon2
Je l'aime !
Posté le 30-10-2015 à 14:42:29  profilanswer
 

Voici son code :

 
Code :
  1. # Name: Ajout_Sauvegarde_SW_Cisco.ps1
  2. # Author: XXXX
  3. # Company:
  4. # Date: 06/07/2015
  5. #################################################################################################
  6. # Description: Connexion aux switchs Cisco et ajout de commandes                                 #
  7. #################################################################################################
  8. $username = ""
  9. $password = ""
  10. $PlinkPath = "D:\Backup_switchs\SvcExploit\plink.exe"
  11. $commandPath = "D:\Backup_switchs\SvcExploit\command.txt"
  12. $commandPath2 = "D:\Backup_switchs\SvcExploit\command2.txt"
  13. $logPath = "D:\Backup_switchs\SvcExploit"
  14. #Lecture du fichier CSV contenant la liste des addresses des switchs
  15. $DeviceList = Import-Csv "D:\Backup_switchs\SvcExploit\Host-IP-list-full.csv"
  16. foreach ($IP_add in $Devicelist)
  17. {
  18. $SshHost = $IP_add.IPAdress
  19. $file = new-item –Itemtype file "$SshHost.txt" -force
  20. $install_cmd = "cmd.exe"
  21. #Ajout de la clé SSH, envoi d'un 'Y"
  22. $install_args =  "/c `"$PlinkPath -ssh  $SshHost < $commandPath2 `""
  23. $PlinkCMD = [System.Diagnostics.Process]::Start("$install_cmd","$install_args" )
  24. #Envoi de la configuration
  25. $install_args =  "/c `"$PlinkPath -ssh -l $username -pw $password $SshHost  < $commandPath > $logPath`\$SshHost`.txt`""
  26. #Run command and wait for exit
  27. $PlinkCMD = [System.Diagnostics.Process]::Start("$install_cmd","$install_args" )
  28. #$PlinkCMD.WaitForExit()
  29. }
 

la commande $install_args =  "/c `"$PlinkPath -ssh  $SshHost < $commandPath2 `"" le fichier commandPath2 contient simplement un Y (il n'avait pas réussi à l'envoyer directement dans son code).

 

Contenu du fichier commandPath2.txt :

y

 

Voilà c'est pas très propre ... Mais ca a fais le job et ca peut te donner une piste, mais c'est plus qu'optimisable.

Message cité 1 fois
Message édité par ChaTTon2 le 30-10-2015 à 14:42:49

---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
n°135324
ChaTTon2
Je l'aime !
Posté le 30-10-2015 à 14:47:37  profilanswer
 

j'ajoute qu'il te faut l'outil plink.exe pour lancer le SSH.
 
Le script à besoin de 3 fichiers :
- Host-IP-list.csv : contient la liste des switch
- command.txt : contient la liste des commandes
- command2.txt : contient simplement y


---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
n°135325
the_skwi
Posté le 30-10-2015 à 14:52:59  profilanswer
 

Cool merci encore.  
 
Je ne sais pas si je vais utiliser ça, je regarde côté python là pour le moment car ça semble plus puissant et ça pourra m'être utile par la suite pour des besoins plus complexes.
 
C'est toujours mieux d'en avoir plus que pas assez ;)

n°135370
the_skwi
Posté le 02-11-2015 à 18:24:23  profilanswer
 

steph1066 a écrit :

Il y a fabric qui peux faire ça, c'est du python
http://www.fabfile.org/
exemple code:
from fabric.api import *
 
def mesCommandes():
    run('ls')
    run('touch /toto')
    sudo('echo "test" >> /etc/resolv.conf')
 
ensuite
fab -f monScript.py mesCommandes -u root -H IP1,IP2...


 
Je me suis fait un petit tuto pour connaitre la syntaxe du langage, maintenant je vais attaquer le gros morceau.  
En googlant rapidos ssh/python il me ressort ton fabric :) cependant j'ai installé la version 3.5 de python, et sur leur site il y a : "Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks."
 
Est-il possible d'intégrer ce "package" dans la version 3.5? Je n'ai pas trouvé d'archive à télécharger.
 
Merci :)

n°135373
ChaTTon2
Je l'aime !
Posté le 03-11-2015 à 08:49:15  profilanswer
 

Je serais preneur de ton script au final ! :)


---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
n°135374
the_skwi
Posté le 03-11-2015 à 09:06:07  profilanswer
 

Pas de sushi, le plus dur c'est de trouver les bonnes briques de légo, après les assembler à notre sauce c'est un jeu d'enfant :)
*cherche la brique fabric python 3.5*

n°135388
o'gure
Multi grognon de B_L
Posté le 03-11-2015 à 14:31:47  profilanswer
 

ChaTTon2 a écrit :

Voici son code :

 
Code :
  1. # Name: Ajout_Sauvegarde_SW_Cisco.ps1
  2. # Author: XXXX
  3. # Company:
  4. # Date: 06/07/2015
  5. #################################################################################################
  6. # Description: Connexion aux switchs Cisco et ajout de commandes                                 #
  7. #################################################################################################
  8. $username = ""
  9. $password = ""
  10. $PlinkPath = "D:\Backup_switchs\SvcExploit\plink.exe"
  11. $commandPath = "D:\Backup_switchs\SvcExploit\command.txt"
  12. $commandPath2 = "D:\Backup_switchs\SvcExploit\command2.txt"
  13. $logPath = "D:\Backup_switchs\SvcExploit"
  14. #Lecture du fichier CSV contenant la liste des addresses des switchs
  15. $DeviceList = Import-Csv "D:\Backup_switchs\SvcExploit\Host-IP-list-full.csv"
  16. foreach ($IP_add in $Devicelist)
  17. {
  18. $SshHost = $IP_add.IPAdress
  19. $file = new-item –Itemtype file "$SshHost.txt" -force
  20. $install_cmd = "cmd.exe"
  21. #Ajout de la clé SSH, envoi d'un 'Y"
  22. $install_args =  "/c `"$PlinkPath -ssh  $SshHost < $commandPath2 `""
  23. $PlinkCMD = [System.Diagnostics.Process]::Start("$install_cmd","$install_args" )
  24. #Envoi de la configuration
  25. $install_args =  "/c `"$PlinkPath -ssh -l $username -pw $password $SshHost  < $commandPath > $logPath`\$SshHost`.txt`""
  26. #Run command and wait for exit
  27. $PlinkCMD = [System.Diagnostics.Process]::Start("$install_cmd","$install_args" )
  28. #$PlinkCMD.WaitForExit()
  29. }
 

la commande $install_args =  "/c `"$PlinkPath -ssh  $SshHost < $commandPath2 `"" le fichier commandPath2 contient simplement un Y (il n'avait pas réussi à l'envoyer directement dans son code).

 

Contenu du fichier commandPath2.txt :

y

 

Voilà c'est pas très propre ... Mais ca a fais le job et ca peut te donner une piste, mais c'est plus qu'optimisable.


HS: Si l'objectif c'est la sauvegearde de conf ("ajout sauvegarde switch" d'après le titre) à une époque on utilisait rancid
http://www.shrubbery.net/rancid/

Message cité 1 fois
Message édité par o'gure le 03-11-2015 à 14:45:04

---------------
Relax. Take a deep breath !
n°135406
ChaTTon2
Je l'aime !
Posté le 04-11-2015 à 11:06:03  profilanswer
 

o'gure a écrit :


HS: Si l'objectif c'est la sauvegearde de conf ("ajout sauvegarde switch" d'après le titre) à une époque on utilisait rancid  
http://www.shrubbery.net/rancid/


c'est toujours d'actualité ... Mais le responsable infra voulait pas en entendre parler ...


---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
n°135424
the_skwi
Posté le 05-11-2015 à 12:02:33  profilanswer
 

Bon j'avais créé un autre sujet dans la partie programmation mais il n'intéresse personne, donc je vais continuer ici :
 
J'arrive bien à me connecter en SSH à l'équipement avec paramiko, cependant quand j'exécute ce code  
 

Code :
  1. stdin, stdout, stderr = ssh.exec_command('show vlan')


 
ça me ressort :

Citation :

SSH command execution is not supported.


 
Donc je ne peux pas utiliser la fonction exec_command pour ce type d'équipement car il faut être en mode "interactif".
Pour ce faire, je dois passer par une invoke_shell en utilisant la fonction send() sur le channel. Le problème est que je ne sais pas comment récupérer le flux (ni même si cette fonction le permet).
 

Code :
  1. channel = ssh.invoke_shell()
  2. channel.send('show vlan')


 
Des idées?
 
 
 

n°135427
the_skwi
Posté le 05-11-2015 à 12:51:16  profilanswer
 

ça avance :)
Pour l'instant j'arrive à me connecter au switch, et à récupérer les informations dans un fichier text
 

Code :
  1. import os
  2. import paramiko
  3. import sys
  4. import time
  5. # ssh
  6. print 'enter ssh'
  7. ssh = paramiko.SSHClient()
  8. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # this will automatically add the keys
  9. ssh.connect('ip', username='xxx', password='xxx')
  10. # Cmd
  11. print 'attempt to show vlans '
  12. channel = ssh.invoke_shell()
  13. channel.send('\n')
  14. time.sleep(3)
  15. channel.send('show vlan\n')
  16. time.sleep(3)
  17. f = open('output.txt', 'a')
  18. f.write(channel.recv(4096))
  19. f.close()
  20. ssh.close()
  21. os.system("pause" )


 
Je pense qu'à partir de maintenant ça va aller vite. Plus qu'à analyser le retour et renvoyer des commandes spécifiques en conséquence.

n°135657
the_skwi
Posté le 16-11-2015 à 18:24:09  profilanswer
 

Bonjour,
 
Je vais reprendre ce topic là vu que le problème en découle.
 
J'arrive désormais à me connecter à mes switch proCurve en python avec Paramiko, à envoyer des commandes et récupérer le contenu.
 
Problème : Dans le fichier que je récupère, j'ai ces caractères qui apparaissent :

Code :
  1. [?25hSW005293_001> [?25hE


 
Après investigation, il s'agirait de "VT100 escape code" qui permettent de bouger le curseur sur le terminal.
http://www.disinterest.org/resourc [...] 00244.html
 
Solution de contournement : passer par des regulars expressions (re) pour supprimer tout ce beau monde.

Code :
  1. def cleanContent(content):
  2. procurve_re1 = re.compile(r'(\[\d+[HKJ])|(\[\?\d+[hl])|(\[\d+)|(\;\d+\w?)')
  3. procurve_re2 = re.compile(r'(\\x1b)')
  4. procurve_re3 = re.compile(ur'[\u001B]E[\u001B]*')
  5. procurve_re4 = re.compile(ur'[\u001B]*')
  6. content = procurve_re1.sub("", content)
  7. content = procurve_re2.sub("", content)
  8. content = procurve_re3.sub("", content)
  9. content = procurve_re4.sub("", content)
  10. return content


 
ça me retire bien mes caractères, cependant dans le fichier une fois nettoyé, les lignes que j'injecte - qui n'ont pas de retour - ne sont pas à la ligne.
Exemple :  

Citation :

SW005293_001> SW005293_001> enableusername: monLogin


 
Si la fonction engendre un retour là c'est tout bon, exemple :

Citation :

SW005293_001# SW005293_001# show vlan
 
 Status and Counters - VLAN Information
 
 
 
  Maximum VLANs to support : 20
...


 
On peut voir deux fois le nom du switch car j'envoie un "\n" avant d'envoyer le "show vlan".
 
Je ne pense pas que ce soit un problème très commun, s'il y a un "expert" qui passe par là, tant mieux.
 
Questions :
- Est-il possible de dire au terminal de ne pas prendre en compte ces caractères spéciaux pour éviter de faire le post-traitement?
- Comment puis-je avoir sur plusieurs lignes ce qui en temps normal est affiché sur plusieurs lignes? Par exemple en faisant plusieurs fois "entrée" d'affilé.
 
Merci, bonne soirée !

n°135850
the_skwi
Posté le 24-11-2015 à 11:20:50  profilanswer
 

Je laisse ça ici si ça peut aider des gens, le code complet pour me connecter sur des switch procurve et envoyer des commandes, récupérer le contenu, et nettoyer les caractères "VT100".
 

Code :
  1. # python "D:\DEV\python dev\connexion_function.py"
  2. # coding: utf8
  3. # VT100 Terminal Control
  4. from tools_function import *
  5. import getpass
  6. import paramiko
  7. import StringIO
  8. import time
  9. import re
  10. #Fonction pour récupérer le login
  11. def getLogin():
  12. login =  raw_input(" Login = " )
  13. password = getpass.getpass(" Password = " )
  14. return login, password
  15. #Fonction pour se connecter
  16. def connexion(ip_addr, login, password):
  17. ssh = paramiko.SSHClient()
  18. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # this will automatically add the keys
  19. ssh.connect(ip_addr, username=login, password=password)
  20. channel = ssh.invoke_shell()
  21. channel.send('\n')
  22. return ssh, channel
  23. #Fonction pour enable
  24. def enableMode(login, password, channel):
  25. channel.send('enable\n')
  26. channel.send(login + '\n')
  27. channel.send(password + '\n')
  28. channel.send('terminal length 1000\n')
  29. #Fonction permettant d'injecter des lignes de cmd contenues dans un fichier
  30. def sendCmd(cmdFilePath, channel):
  31. f = open(cmdFilePath, "r" )
  32. lignes = f.readlines()
  33. f.close
  34. for ligne in lignes:
  35.  channel.send(ligne.strip() + '\n')
  36.  time.sleep(1)
  37. #Fonction pour récupérer les infos de l'équipement
  38. def getContent(contentSIO, errorSIO, channel):
  39. time.sleep(10) # On attend 10 secondes pour que le switch ait le temps de tout afficher
  40. bufsize = 1024
  41. channel.setblocking(0)
  42. try:
  43.  while not channel.exit_status_ready():
  44.   if channel.recv_ready():
  45.    content_buff = channel.recv(bufsize)
  46.    while content_buff:
  47.     contentSIO.write(content_buff)
  48.     content_buff = channel.recv(bufsize)
  49.   if channel.recv_stderr_ready():
  50.    error_buff = channel.recv_stderr(bufsize)
  51.    while error_buff:
  52.     errorSIO.write(error_buff)
  53.     error_buff = channel.recv_stderr(bufsize)
  54. except :
  55.  pass
  56. return contentSIO, errorSIO
  57. def cleanContent(content):
  58. procurve_re1 = re.compile(r'(\[\d+[HKJ])|(\[\?\d+[hl])|(\[\d+)|(\;\d+\w?)')
  59. procurve_re2 = re.compile(r'(\\x1b)')
  60. procurve_re3 = re.compile(ur'[\u001B]E[\u001B]*')
  61. procurve_re4 = re.compile(ur'[\u001B]*')
  62. content = procurve_re1.sub("", content)
  63. content = procurve_re2.sub("", content)
  64. content = procurve_re3.sub("", content)
  65. content = procurve_re4.sub("", content)
  66. return content.strip("\r\n" )
  67. def cleanFile(filePath):
  68. if os.path.isfile(filePath):
  69.  contentSIO = StringIO.StringIO()
  70.  f = open(filePath, "r" )
  71.  lignes = f.readlines()
  72.  for ligne in lignes:
  73.   contentSIO.write(ligne.strip() + "\n" )
  74.  f.close()
  75.  writeFile(filePath, cleanContent(contentSIO.getvalue()))


 
Et un autre fichier pour l'instant pauvre mais pour que ça soit évolutif :

Code :
  1. # python "D:\DEV\python dev\tools_function.py"
  2. # coding: utf8
  3. import os.path
  4. # rootPath = "D:\\DEV\\python dev\\"
  5. rootPath = os.path.dirname((os.path.abspath(__file__))) + "\\"
  6. #Fonction pour écrire dans un fichier
  7. def writeFile(filePath, content, type='w'):
  8. if content <> "":
  9.  f = open(filePath, type)
  10.  f.write(content)
  11.  f.close()
  12. if __name__ == "__main__":
  13. print rootPath


 
Et la fonction principale :

Code :
  1. # python "D:\DEV\python dev\main_function.py"
  2. # coding: utf8
  3. from connexion_function import *
  4. from analyse_function import *
  5. from tools_function import *
  6. import multiprocessing as mp
  7. def main(ip_addr):
  8. #vars
  9. logPath = rootPath  + "login.txt"
  10. if logPath == "" :
  11.  login, password = getLogin()
  12. else:
  13.  f = open(logPath, "r" )
  14.  lignes = f.readlines()
  15.  f.close
  16.  login = lignes[0].strip()
  17.  password = lignes[1].strip()
  18. lienParam = rootPath  + "get_conf.txt"
  19. contentPath = rootPath + "data_" + ip_addr + ".txt"
  20. errorPath = rootPath + "err_" + ip_addr + ".txt"
  21. contentSIO = StringIO.StringIO()
  22. errorSIO = StringIO.StringIO()
  23. #interractions
  24. print "Interractions"
  25. ssh, channel = connexion(ip_addr, login, password)
  26. channel.send('\n')
  27. enableMode(login, password, channel)
  28. sendCmd(lienParam, channel)
  29. #get data
  30. print "Get data"
  31. contentSIO, errorSIO = getContent(contentSIO, errorSIO, channel)
  32. writeFile(contentPath, contentSIO.getvalue())
  33. writeFile(errorPath, errorSIO.getvalue())
  34. channel.close()
  35. contentSIO.close()
  36. errorSIO.close()
  37. print "Clean data"
  38. cleanFile(contentPath)
  39. cleanFile(errorPath)
  40. print "Analyse data"
  41. analyseFile(contentPath, ip_addr)
  42. if __name__ == '__main__':
  43. processList = []
  44. ipList = ["ip du switch1, ip du switch2..."]
  45. # ipList = ["ip du switch"]
  46. for ip in ipList:
  47.  p = mp.Process(target=main, args=(ip,))
  48.  processList.append(p)
  49.  print "Go " + ip
  50.  p.start()
  51.  # p.join() #permet d'attendre la fin d'exec avant d'en lancer un autre.
  52. # for process in processList:
  53.  # print process.name


 
L'indentation est mal passée avec le c/c, je vous laisse mettre ça bien de votre côté :)
 
à côté de ça j'ai un fichier login.txt avec simplement login/mdp sur deux lignes, et get_conf.txt contenant les commandes que je veux passer (une par ligne) : sh vlan, sh conf, etc
 
Bonne journée!
 
PS: Je n'ai pas résolu le problème du login qui ne s'affiche que sur une seule ligne, mais je ne m'en préoccupe pas car je n'en ai pas besoin. Si jamais quelqu'un a une solution je regarderai.
PS² : Il n'y a pas de gestion d'erreurs pour l'instant, je le ferai si j'ai le temps et si je trouve ça vraiment utile. Tant que je suis le seul à utiliser ça, je peux débuger en temps réel.


Message édité par the_skwi le 24-11-2015 à 11:25:54
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Systèmes & Réseaux Pro
  Réseaux

  Automatisation de connexions SSH & injection de commandes

 

Sujets relatifs
Besoin spécifique multiples connexions internet sur un rxRecherche programme pour lancer des commandes sur plusieurs machines
Configuration des connexions Ethernet par RadiusAccès à distance sur Windows 2012 par 2 connexions simultanées
Exécuter un programe côté serveur par l'intermédiaire d'un client SSH?[TUTO] Injection clé SSH via FABRIC
MDT - script d'injection des machines dans SQLDeux connexions Internet sur un 2008 r2 --> Plus de partage
Plus de sujets relatifs à : Automatisation de connexions SSH & injection de commandes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR