Ssh - cmd complexe à distance

Ouaip ça pue, je sais.

Dans ce cas, c’est le ssh à distance qui pue, malheureusement.

Normalement, je procède autrement, mais pour l’instant seul un echo cmd suivi d’une redirection me permet d’écrire dans le fichier. Et si je met des guillemets ou quoi que ce soit d’autres, ça marche encore moins.

:s

Comment faire compliqué quand on peut faire simple… En principe ssh, c’est vraiment bien, mais là, pour le coup, c’est un peu la misère.

Le fautif n’est pas ssh mais le mécanisme de substitution et de découpage des arguments de bash
qui demande un peu d’attention

Pourquoi tu n’utilises pas la méthode que je t’ai donné plus haut ?

echo 'cat /etc/ntp.conf | grep server | grep ntp | awk '\''{print $2}'\'' | xargs -l dig +short' |
ssh -l "$USER" "$HOST" bash

Bon, j’avoue il y a quand même une subtilité,
on ne peut pas échapper un ’ dans des ’ ', même avec '.
Par contre, si ce n’est pas entre des ’ ', ’ fonctionne normalement.
Donc la commande est construite comme ça :
‘phrase 1’‘phrase 2’

Tout le monde a suivi :laughing: ?

Yeap, ça marche!

Bien vu, le fait d’injecter la commande de cette façon. C’est plus économique que de passer par la création d’un fichier que l’on “exécuterait” localement.

Je n’y avais pas pensé.

Merci!

Par contre, je n’ai pas du tout compris ton explication :

on ne peut pas échapper un ’ dans des ’ ', même avec '.
Par contre, si ce n’est pas entre des ’ ‘, ’ fonctionne normalement.
Donc la commande est construite comme ça :
‘phrase 1’’‘phrase 2’

Tu aurais moyen de reformuler ? (stp :slightly_smiling:)

Merci pour le coup de main!

Toute la subtilité réside en quelques règles simples
qui s’appliquent aux quotes (guillemets simples) :

  • une portion de ligne de commande entre quotes sera préservée
  • une quote ne peut être placée entre des quotes, même précédée par un backslash ref.

Donc si je veux que le résultat soit abc’def,
je ne peux pas faire ‘abc’def’ (qui donnera une première chaine abc suivie de def et d’une erreur car la dernière quote est ouvrante et n’a pas de fermante correspondant)
ni ‘abc’def’ (même problème qui donne abc\def + erreur)

Donc pour faire apparaître la quote dans le résultat, il faut la mettre hors quote
et lui mettre un caractère d’échappement :
abc’def -> abc’def
et maintenant si on veut protéger abc et def (par exemple parce qu’il y a des { ou des substitions de variables :wink: )
’$TOTO’’’{machin}’ -> $TOTO’{machin}

C’est ce résultat qui sera vu pas ssh et qui sera passé tel quel à l’interpréteur de la machine distante.

Okaaaaay…

:slightly_smiling:

Merci pour l’’'explication. Je crois avoir compris le truc :slightly_smiling:

hello,

tu as deja pensé à essayer de rediriger les logs de tes machines vers un serveur central dans une base de données et ensuite d’y accéder par un portail web ? (ou script bien entendu)

phpsyslog-ng fait cela:
http://doc.ubuntu-fr.org/syslog-ng

c’est aussi possible pour les serveurs sous win d’intégrer les logs sur le serveur de log…

Pet etre que ça peut te servir…

Aaaah non… Connaissais pas.

'Vais voir pour en savoir +.

Merci pour le tuyau :slightly_smiling: