2014-12-13 9 views
6

Ich brauche ein Shell-Skript remote innerhalb der Linux-Box von Windows-Run Shell-Skript (mit Parametern) auf Windows-Kommandozeile über Plink

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

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

Hier auszuführen ist der Befehl, den ich unter Windows lief Eingabeaufforderung

cmd> plink.exe -ssh [email protected] -pw gbG32s4D/ -m C:\myscript.sh 5 

ich erhalte Ausgabe als

"Illegal Anzahl der Parameter"

Gibt es eine Möglichkeit, Kommandozeilenparameter an Shell-Skript übergeben, die auf Remote-Server ausgeführt werden?

Antwort

0

Haben Sie versucht, in Anführungszeichen das Kommando und Argument setzen:

d -m "C: \ myscript.sh 5"

+0

Ya ich habe ich bekam Fehler, nicht in der Lage, Befehlsdatei zu öffnen "C: \ myscript.sh 5" –

+0

mmm, ich habe es heruntergeladen und spielte um. Es sieht so aus, als ob es Ihre Batchdatei unverändert abspielt. Wenn Sie Argumente verwenden möchten, sollten Sie dieses Shellskript bereits auf der anderen Seite haben und dann ohne die Option -m aufrufen –

7

Sie mißverstehen, wie die -m Schalter funktioniert.

Es ist nur eine Möglichkeit, plink laden die Befehle an den Server von einer lokalen Datei senden.

Die Datei wird NICHT hochgeladen und auf dem Remote-Server ausgeführt (mit Argumenten).

Der Inhalt wird lokal gelesen und an den Server gesendet und dort ausgeführt, als ob Sie ihn in eine (Remote-) Befehlszeile eingegeben hätten. Sie können ihm keine Argumente geben.


Eine Abhilfe ist die Datei im laufenden Betrieb vor Ort zu erzeugen, bevor plink aus einer Batch-Datei (zB run.bat) ausgeführt wird:

echo echo %1 > script.tmp 
plink.exe -ssh [email protected] -pw gbG32s4D/ -m script.tmp 

dann die Batch-Datei mit dem Argument ausgeführt:

run.bat 5 

Mit dem obigen Befehl wird das Skript echo 5 auf dem Server ausführen.


Wenn das Skript komplex ist, anstatt sie lokal Montag, hat es fertig auf dem Server (wie @MarcelKuiper vorgeschlagen) und führen Sie einfach das Skript über Plink.

In diesem Fall, da wir nur einen Befehl ausführen, können Sie ihn in der Befehlszeile von Plink übergeben, einschließlich der Argumente. Sie müssen den Schalter -m nicht mit einer (temporären) Datei verwenden.