Forum Programmation.shell Redirection I/O

Posté par  .
Étiquettes : aucune
0
5
jan.
2005
Bonjour à tous et bonne année ,

Petit pb :
Je souhaites me connecter à un serveur ssh distant pour éteindre un ordinateur. Pour ça je pense qu'il faut faire :

(Désolé pour les "<" mais je nais pas trouvé de moyen de protéger les "inferieurs à" d'une conversion en html... :( )

ssh -l $CurrentUsername $CurrentAddress <<EOF
init 0
EOF


Mais ça donne :
check_temp.sh: line 373: syntax error: unexpected end of file


ssh -l $CurrentUsername $CurrentAddress <EOF
init 0
EOF


Mais dans ce cas j'obtiens :
check_temp.sh: line 212: EOF: No such file or directory
check_temp.sh: line 214: EOF: command not found

Mais que se passe t'il donc ???
Je nage...

Quelqu'un peut me renseigner ?
Merci d'avance à tous...
  • # Oups...

    Posté par  . Évalué à 2.

    Ah ben si, la prévisualition nre fonctionne pas comme la publication définitive du message...
  • # Pourquoi <<EOF?

    Posté par  . Évalué à 4.

    ssh -l $CurrentUsername $CurrentAddress "init 0" donne quoi?
    • [^] # Re: Pourquoi <<EOF?

      Posté par  . Évalué à 1.

      Ca à l'air de marcher. Merci, je ne connaissais pas cette syntaxe...
      Mais si on veut lancer plusieurs instructions sur le serveur distant ?
      • [^] # Re: Pourquoi <<EOF?

        Posté par  . Évalué à 2.

        Tu separes les instructions par des ;
        ou alors tu ecris un script a executer sur le serveur distant.
        1/ Copie par scp
        2/ Execution
        3/ Destruction du script.
      • [^] # Re: Pourquoi <<EOF?

        Posté par  (site web personnel) . Évalué à 2.

        Mais si on veut lancer plusieurs instructions sur le serveur distant ?

        Le plus simplement du monde : avec des ';'

        Par exemple :

        ssh localhost 'pwd;pwd'


        Noter l'usage des simples quotes (marche aussi avec double quotes) pour éviter au shell courant d'interpréter le ';'
  • # Charge un profile avant peut-être

    Posté par  (site web personnel) . Évalué à 2.

    genre :
    ssh -l $CurrentUsername $CurrentAddress <<EOF
    . /etc/profile
    init 0
    EOF
    
    sinon une aute manière d'écrire que j'ai découvert y'a pas longtemps avec rsh (je pense que ça marche avec ssh). Mais ça ne réglera pas ton problème : c'est plutot du coté de l'environnemnt d'exécution que tu devras chercher.
    ssh -l $CurrentUsername $CurrentAddress . /etc/profile ";" init 0
    
    En gros tout ce que tu veux envoyer à l'autre machine mais qui fait partie de caractères spécials pour bash (ex: ; > etc...) tu le mets entre guillemets

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.