Skript aus der Ferne unter Unix ausführen, Ausgabe lokal holen?

104748
Cristi Diaconescu

Ich muss ein Skript (Tcl oder was auch immer) auf einer Remote-Unix-Maschine von einer (lokalen) Windows-Befehls-Shell ausführen, und ich möchte, dass der Befehl stdout / stderr in der Windows-CLI angezeigt wird. Der Exit-Code wäre auch nützlich.

Ist das mit ssh (putty) möglich? Oder mit anderen Mitteln?

Vielen Dank!

41

5 Antworten auf die Frage

38
kmarsh

This is the default for SSH. If you want to redirect output remotely, put the redirect symbol (typically ">") inside the command quotes.

For example:

ssh remote_host "ls > /tmp/file_on_remote_host.txt" 

For saving output locally on Windows host,

ssh remote_host "ls" > .\file_on_local_host.txt 

To combine stderr remotely and save it and stdout locally,

ssh remote_host "ls 2>&1" > .\combined_output_on_local_host.txt 
Ist es möglich, dies mit putty.exe zu tun? Das heißt, sie arbeiten als "normales" CLI-Programm, im Gegensatz zu dem Standard, bei dem ein Terminal emuliert wird. Cristi Diaconescu vor 14 Jahren 0
Ich habe in ein Windows 2003-System eingebettet und die Befehlszeile ausgeführt, ja. Der Host hatte die HP-Version des SSH-Servers installiert, um die Systemverwaltungstools zu unterstützen. Wenn Sie nur einen SSH-Client haben, läuft alles auf dem Remote-System. kmarsh vor 14 Jahren 0
Dies funktioniert auch für einen lokalen Computer, der nicht Windows ist. shiri vor 6 Jahren 1
Außer dem Backslash-Pfad, ja. kmarsh vor 6 Jahren 0
20
Cristi Diaconescu

Was ich gesucht habe, ist putty's side-kick, plink.exe . Im Gegensatz zu putty, der wie ein Terminalemulator plinkwirkt, verhält es sich wie ein normales (nicht interaktives) CLI-Programm.

Mit dieser Option könnte ich dies tun cmd.exeund die Remote-Befehlsausgabe lokal speichern.

\> plink remote_host "ls -l" > log.txt 

Das Beste von allem, das funktioniert sowohl für ssh als auch für telnet !

Nur zu Referenzzwecken sind dies die verfügbaren Optionen:

PuTTY Link: command-line connection utility Release 0.59 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 -noagent disable use of Pageant -agent enable use of Pageant -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) -nc host:port open tunnel in place of session (SSH-2 only) 
3
Mark

Yes if you use the putty ssh client you will see any command line output your script will produce. To get the exit code after the script runs type:

echo $? 
1
James

Eine andere Möglichkeit, um die Protokolldatei auf Ihrem Windows-Computer zu erhalten, ist: - M / C von Windows m / c auf einem Unix-System installieren (abhängig von UNIX kann dies mithilfe des Samba-Servers möglich sein) - Führen Sie das Skript unter Windows mit einem beliebigen Remote-Client aus - Skriptprotokoll in das eingehängte Verzeichnis

Sie können die Ausgabe live sehen, wenn Sie ein UNIX-Äquivalent von tail für Windows erhalten .

0
manjesh23

Noch eine Antwort:

Speichern Sie alle Linux-Befehle in der Datei cmdlist.txt und verwenden Sie den folgenden Befehl.

plink.exe -ssh -pw passwd uname@1.2.3.4 output.txt

passwd == Kennwort für die Geräteanmeldung

uname == Benutzername für das Geräteanmelden

1.2.3.4 == IP-Adresse des Geräts

Nachdem dieser Befehl ausgeführt wurde, werden alle cmdlist.txt-Befehle auf dem Remote-Gerät ausgeführt und die Ausgabe wird in der Datei output.txt gespeichert

Stellen Sie sicher, dass sich plink.exe und cmdlist.txt im selben Verzeichnis befinden, und Sie zeigen, dass Ihre DOS-Eingabeaufforderung auf dasselbe Verzeichnis verweist.