SmallFItz a écrit 6 commentaires

  • [^] # Re: inverse

    Posté par  . En réponse au message Obtenir sortie de psql via ssh [résolu]. Évalué à 1. Dernière modification le 05 septembre 2016 à 17:21.

    Maintenant l'incompréhension c'est pourquoi le .bash_profile n'est pas lu ???

    J'ai essayé un

    moi@pcperso:~$ ssh user@server 'exec bash; echo $PGPORT'

    Le bash a vraiment l'air de s'exécuter sur le server… Et ma sortie standart à l'air redirigée là bas, alors que mon entrée standard non (je crois ???)

  • [^] # Re: inverse

    Posté par  . En réponse au message Obtenir sortie de psql via ssh [résolu]. Évalué à 1.

    Bingo ça venait bien de là.

    Mise en place de deux variables de test pour mettre en évidence l'importance des quotes simples sur les quotes double après la commande ssh.

    En local :

    moi@pclocal:~$ echo 'export test="Valeur locale !' >> .bashrc
    moi@pclocal:~$ exec bash
    moi@pclocal:~$ echo $test
    Valeur locale !

    Sur le serveur :

    moi@pclocal:~$ ssh user@server
    Last login: Mon Sep  5 16:21:00 2016 from 10.70.2.8
    user@server[database]
    /home/user $ echo 'export test="Valeur serveur !' >> .bashrc
    /home/user $ exec bash
    /home/user $ echo $test
    Valeur serveur !

    Maintenant test des DOUBLES quote

    moi@pcperso:~$ ssh user@server "echo $test"
    Valeur locale !

    Maintenant je teste les SIMPLE quote

    moi@pcperso:~$ ssh user@server 'echo $test'
    Valeur serveur !

    Conclusion : Il faut utiliser les simple quote.
    Maintenant recherche de la conf utilisée.

    moi@pclocal:~$ ssh user@server
    Last login: Mon Sep  5 16:21:00 2016 from 10.70.2.8
    user@server[database]
    /home/user $ echo $PGPORT
    5433
    /home/user $ exit
    logout
    moi@pcperso:~$ ssh user@server 'echo $PGPORT'

    Y'a donc bien un souci de definition de la variable $PGPORT.
    Une rapide recherche m'a permis de trouver que cette variable était définie dans le .bash_profile
    Il est donc nécessaire de le lire, de le sourcer avec . .bash_profile;

    moi@pcperso:~$ ssh $dev4_oltp '. .bash_profile; echo $PGPORT'
    5433

    Ca marche !
    Confirmé par :

    moi@pcperso:~$ ssh user@server '. .bash_profile; psql << END
    select tablename from pg_tables LIMIT 1;
    END'
      tablename   
    --------------
     pg_statistic
    (1 row)

    Merci à tous ! =)

  • [^] # Re: inverse

    Posté par  . En réponse au message Obtenir sortie de psql via ssh [résolu]. Évalué à 1.

    Oui quoi qu'il arrive des fichiers de conf ne sont pas lu.

  • [^] # Re: inverse

    Posté par  . En réponse au message Obtenir sortie de psql via ssh [résolu]. Évalué à 1.

    Je suppose que le problème pourrait être du à une différence entre le mode batch et interactif de ssh: peut-être un alias shell ou une variable d'environnement non passée…? Vu que la table ne s'appelle pas user, ben je dirais qu'une solution serait de demander à psql de connecter à la bonne base (option -d iirc, à vérifier).

    Salut,
    Bonne piste ! Merci ! :) Je vais me renseigner sur la conf qui se trouve sur le serveur.
    Voir s'il y a un alias ou quelque chose qui permet de ne donner aucun prédicat à la commande psql.

  • [^] # Re: inverse

    Posté par  . En réponse au message Obtenir sortie de psql via ssh [résolu]. Évalué à 1.

    equivaut à lancer la commande :

    psql << END
    select tablename from pg_tables LIMIT 1;
    END

    sur le serveur final, ce qui n'est pas une commande valide

    Cette commande est valide chez moi :

    moi@pc_perso:~$ ssh user@server
    Last login: Mon Sep  5 15:46:11 2016 from 10.70.2.8
    user@server[database]
    /home/user $ psql << END
    > select tablename from pg_tables LIMIT 1;
    > END
      tablename   
    --------------
     pg_statistic
    (1 row)
    
  • [^] # Re: inverse

    Posté par  . En réponse au message Obtenir sortie de psql via ssh [résolu]. Évalué à 1.

    Salut,

    Ca ne change rien j'ai la même erreur :

    cat <<END | ssh user@server psql
    select tablename from pg_tables LIMIT 1;
    END
    psql: ERROR:  No such database: user