Parameter für plink-Aufruf
Hallo,
ich führe via plink ein lokales Skript auf dem Server aus - das klappt soweit.
Beispiel:
.\plink.exe -ssh -t user@server -pw <passwort> -m Test.sh > Error.log 2>&1
Das ganze ist in ein (Windows) Cmd-Skript eingebettet; der Inhalt entspricht dem obigen Text. Test.sh ist hier exemplarisch genannt und seht für ein ganzes set an unterschiedlichen skripten.
Nun möchte ich diesem Skrip (Test.sh) Parameter mitgeben.
folgender Aufruf funktioniert nicht
.\plink.exe -ssh -t user@server -pw <passwort> -m Test.sh parameter1 Parameter2 > Error.log 2>&1
In der Doku und in anderen Einträgen habe ich nicht wirklich etwas zu dem Thema gefunden.
Ich hatte schon daran gedacht, die jeweilige Datei vorher zu ändern und (im aufrufenden cmd) aus zwei Dateien zusammenzusetzen: der originaldatei und davor einem Teil in dem entsprechende Parameter gesetzt werden. Dies geht aber nicht, da den Parametervariablen $1,$2,$3 usw. nichts zugeweisen werden kann.
Kennt jemand einen Trick, wie man die Parameter übergeben kann?
ich führe via plink ein lokales Skript auf dem Server aus - das klappt soweit.
Beispiel:
.\plink.exe -ssh -t user@server -pw <passwort> -m Test.sh > Error.log 2>&1
Das ganze ist in ein (Windows) Cmd-Skript eingebettet; der Inhalt entspricht dem obigen Text. Test.sh ist hier exemplarisch genannt und seht für ein ganzes set an unterschiedlichen skripten.
Nun möchte ich diesem Skrip (Test.sh) Parameter mitgeben.
folgender Aufruf funktioniert nicht
.\plink.exe -ssh -t user@server -pw <passwort> -m Test.sh parameter1 Parameter2 > Error.log 2>&1
In der Doku und in anderen Einträgen habe ich nicht wirklich etwas zu dem Thema gefunden.
Ich hatte schon daran gedacht, die jeweilige Datei vorher zu ändern und (im aufrufenden cmd) aus zwei Dateien zusammenzusetzen: der originaldatei und davor einem Teil in dem entsprechende Parameter gesetzt werden. Dies geht aber nicht, da den Parametervariablen $1,$2,$3 usw. nichts zugeweisen werden kann.
Kennt jemand einen Trick, wie man die Parameter übergeben kann?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 343057
Url: https://administrator.de/contentid/343057
Ausgedruckt am: 08.11.2024 um 11:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo @trobonarf,
hier ein Beispiel mit Powershell:
Auf dem Linux Maschine wird dann das Skript test.sh ausgeführt und übergebt das Wort hund:
Ergebnis:
Gruß, Sascha
hier ein Beispiel mit Powershell:
$prog = "C:\Program Files (x86)\PuTTY\plink.exe"
$command = "-ssh root@maschine -pw passwort sh /root/test.sh $1 hund"
saps $prog -Argumentlist $command -Wait -NoNewWindow -EA Stop
Auf dem Linux Maschine wird dann das Skript test.sh ausgeführt und übergebt das Wort hund:
echo -e ich bin ein $*
Ergebnis:
Gruß, Sascha
Hallo @trobonarf,
saps ist das Kürzel für Start-Process.
Der Parameter -m ist nicht für die Ausführung von lokalen Skripten gedacht (sondern zum Einlesen von Befehlen), da verstehst du wohl etwas falsch.
Hier nochmal die Syntax:
Oder z.B. auf Powershell umsteigen und darüber die SSH Verbindung aufbauen und die Befehle ausführen. Somit besteht die Möglichkeit der Parameterübergabe. Hier ein schnell zusammen gefrimmeltes Beispiel:Ergebnis:
Gruß, Sascha
saps ist das Kürzel für Start-Process.
Der Parameter -m ist nicht für die Ausführung von lokalen Skripten gedacht (sondern zum Einlesen von Befehlen), da verstehst du wohl etwas falsch.
Hier nochmal die Syntax:
Usage: plink [options] [user@]host [command]
("host" can also be a PuTTY saved session name)
Options:
-V print version information and exit
-pgpfp print PGP key fingerprints and exit
-v show verbose messages
-load sessname Load settings from saved session
-ssh -telnet -rlogin -raw
force use of a particular protocol
-P port connect to specified port
-l user connect with specified username
-batch disable all interactive prompts
The following options only apply to SSH connections:
-pw passw login with specified password
-D [listen-IP:]listen-port
Dynamic SOCKS-based port forwarding
-L [listen-IP:]listen-port:host:port
Forward local port to remote address
-R [listen-IP:]listen-port:host:port
Forward remote port to local address
-X -x enable / disable X11 forwarding
-A -a enable / disable agent forwarding
-t -T enable / disable pty allocation
-1 -2 force use of particular protocol version
-4 -6 force use of IPv4 or IPv6
-C enable compression
-i key private key file for authentication
-m file read remote command(s) from file
-s remote command is an SSH subsystem (SSH-2 only)
-N don't start a shell/command (SSH-2 only)
Als workaround könntest du das lokal liegende Skript vor dem Ausführen anpassen.("host" can also be a PuTTY saved session name)
Options:
-V print version information and exit
-pgpfp print PGP key fingerprints and exit
-v show verbose messages
-load sessname Load settings from saved session
-ssh -telnet -rlogin -raw
force use of a particular protocol
-P port connect to specified port
-l user connect with specified username
-batch disable all interactive prompts
The following options only apply to SSH connections:
-pw passw login with specified password
-D [listen-IP:]listen-port
Dynamic SOCKS-based port forwarding
-L [listen-IP:]listen-port:host:port
Forward local port to remote address
-R [listen-IP:]listen-port:host:port
Forward remote port to local address
-X -x enable / disable X11 forwarding
-A -a enable / disable agent forwarding
-t -T enable / disable pty allocation
-1 -2 force use of particular protocol version
-4 -6 force use of IPv4 or IPv6
-C enable compression
-i key private key file for authentication
-m file read remote command(s) from file
-s remote command is an SSH subsystem (SSH-2 only)
-N don't start a shell/command (SSH-2 only)
Oder z.B. auf Powershell umsteigen und darüber die SSH Verbindung aufbauen und die Befehle ausführen. Somit besteht die Möglichkeit der Parameterübergabe. Hier ein schnell zusammen gefrimmeltes Beispiel:
$hostname = "maschine"
function openSSH($command){
try {
Invoke-SshCommand -Computername $hostname -Command $command
} catch [Exception]{
Write-Host $('Exception Message: ' + $_.Exception.Message)
}
}
$tier = "hund"
New-SshSession -Computername $hostname -Username "user" -Password "passwort"
openSSH -command "ls -l /opt/test/ && touch /opt/test/$tier.log && ls -l /opt/test/"
Remove-SshSession -Computername $hostname
Gruß, Sascha