IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

Ecriture dans un fichier et prompt


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 326
    Par défaut Ecriture dans un fichier et prompt
    Bonjour,

    Je dois récupérer des informations sur plusieurs machines à distance. Pour ce faire, je dois me connecter sur chacune et lancer des commandes et scripts pour récupérer ces informations.

    Lorsqu'il n'y a que des commandes, je sais comment faire, j'utilise une fonction du package net::OpenSSH $ssh->capture et je récupère le résultat de la commande que je balance dans un fichier.

    Quand c'est pour des scripts intéractifs, j'utilise Net::SSH::Expect :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    my $ssh = Net::SSH::Expect-> new (
            host => "x.x.x.x",
            password => "pass",
            user => "user",
            raw_pty => 1,
    );
     
    my $login_output=$ssh->login();
    $ssh->send("su login");
    $ssh->waitfor('password:',10) or die "prompt 'password' not found after 10 seconds";
    $ssh->send($pass);
    @output = $ssh->exec("route -n");
    foreach (@output)
    {
            print FILE "$_";
    }
    Use of uninitialized value in string at ./test_PCRF.pl line 243.
    [EDIT] Connexion OK en SSH, mais pas su
    Problème : Prompt recopié après chaque commande dans le fichier et erreur Use of uninitialized value in string toujours active
    [/EDIT]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    @res = $ssh->exec("cat /etc/xxx/xxx.conf");
    foreach (@res)
    {
            print FILE "$_";
    }
    @res est uninitialized ?! Etrangement, j'ai fais exactement la même chose sur d'autres fichiers et ça marche. De plus, quand je le fais à la main, ça fonctionne.

    résultat du fichier :

    xx - bonding.conf

    su: incorrect password
    ^[]0;login@machine:~^G[login@machine ~]$ alias .... bonding
    alias .... bonding

    xx - network

    ^[]0;login@machine:~^G[login@machine ~]$ NETWORKING=yes
    HOSTNAME=machine
    GATEWAY=@IP
    NOZEROCONF=1
    NETWORKING_IPV6=no

    Merci !

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 326
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ssh->send("su login");
    $ssh->waitfor('password:',10) or die "prompt 'password' not found after 10 seconds";
    J'ai un problème à ce niveau là (dixit au-dessus) :
    prompt 'password' not found after 10 seconds
    Alors que le login et mot de passe sont bons.

  3. #3
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Bonjour,

    Désolé je ne peux pas faire l'essai, Net::OpenSSH ne tourne pas sous Windows et mes Perl-Linux ne sont pas à niveau
    Et ne peux donc faire que Windows->Linux.
    As-tu essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ssh->send("/bin/su login");
    ...
    Ou tout ce qui pourrait nuire en pb de $PATH...

    En remote on n'a pas toujours $PATH initialisé...

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 326
    Par défaut
    Salut,

    Je viens d'essayer à l'instant, sans succès

    Entre-temps j'ai essayé autre chose. Je ne cherche plus à me connecter une 2ème fois mais d'utiliser sudo. Mais il fallait que je renseigne un tty car il est requis de base dans la config du sudoers et je ne peux pas passer l'argument -t comme je passe par OpenSSH...

    Pour en revenir au problème actuel,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ssh->waitfor('Password:\s*',30) or warn "MARCHE PAS PASSWORD: $!";
    est exactement la syntaxe que j'ai lorsque je le tape directement sur la remote machine. J'effectue le test en ROOT, j'ai effectué le test avec un autre compte mais sans succès non plus...

  5. #5
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Et qu'est-ce qui t'empêches de te connecter directement avec le bon login, puisque là ça fonctionne ?

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 326
    Par défaut
    J'ai besoin de récupérer le résultat de la commande route -n qui doit être exécutée soit en root (sur le compte root) soit avec sudo sur un autre compte.

    Pour résumé c'est soit je me connecte à distance avec root pour exécuter cette commande soit je me connecte avec un autre compte mais je lance sudo route -n.
    Dans les deux cas j'ai un problème que je n'arrive pas à régler à l'heure actuelle

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme d'ecriture dans un fichier texte
    Par azrael88370 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/01/2005, 17h33
  2. Script shell - écriture dans un fichier
    Par Leishmaniose dans le forum Linux
    Réponses: 6
    Dernier message: 13/12/2004, 22h48
  3. Probleme d'ecriture dans un fichier en mode Text
    Par bbozet dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/01/2004, 13h46
  4. [LG]ecriture dans un fichier binaire
    Par jsaviola dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2003, 17h30
  5. Réponses: 2
    Dernier message: 26/09/2003, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo