web-dev-qa-db-fra.com

Exécuter un script Shell (avec paramètres) sur la ligne de commande Windows via Plink

J'ai besoin d'exécuter un script Shell à distance à l'intérieur de Linux

#!/bin/bash
if [ "$#" -ne 1 ]; then

    echo "Illegal number of parameters"
    exit
fi
    echo "$1"

Voici la commande que j'ai exécutée à partir de l'invite de commande Windows

 cmd>   plink.exe -ssh username@Host -pw gbG32s4D/ -m C:\myscript.sh 5

Je reçois une sortie en 

"Nombre illégal de paramètres"

Existe-t-il un moyen de transmettre un paramètre de ligne de commande au script Shell qui sera exécuté sur un serveur distant?

7
aaditya 1985

Vous comprenez mal le fonctionnement du commutateur -m.

C’est juste un moyen de faire plink charger les commandes à envoyer au serveur à partir d’un fichier local.

Le fichier n'est PAS téléchargé et exécuté sur le serveur distant (avec des arguments).

Son contenu est lu localement, envoyé au serveur et exécuté là comme si vous l'aviez tapé sur une ligne de commande (distante). Vous ne pouvez pas lui donner des arguments.


Une solution de contournement consiste à générer localement le fichier à la volée avant d'exécuter plink à partir d'un fichier de commandes (par exemple, run.bat):

echo echo %1 > script.tmp
plink.exe -ssh username@Host -pw gbG32s4D/ -m script.tmp

Ensuite, exécutez le fichier de commandes avec l'argument:

run.bat 5

Ce qui précède fera exécuter le script echo 5 sur le serveur.


Si le script est complexe, au lieu de l'assembler localement, préparez-le sur le serveur (comme suggéré par @MarcelKuiper) et exécutez le script uniquement via Plink. 

plink.exe -ssh username@Host -pw gbG32s4D/ "./myscript.sh %1"

Dans ce cas, comme nous n'exécutons qu'une seule commande, vous pouvez la transmettre en ligne de commande Plink, y compris les arguments. Vous n'êtes pas obligé d'utiliser le commutateur -m avec un fichier (temporaire).

9
Martin Prikryl

Avez-vous essayé de mettre la commande et l'argument entre guillemets:

c'est-à-dire -m "C:\myscript.sh 5"

0
Marcel Kuiper