Skript remote unter Unix ausführen, lokal ausgeben lassen?

44

Ich muss ein Skript (Tcl oder was auch immer) auf einem Remote-Unix-Computer über eine (lokale) Windows-Befehlsshell ausführen, und ich möchte, dass das stdout / stderr des Skripts 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!

Cristi Diaconescu
quelle

Antworten:

43

Dies ist die Standardeinstellung für SSH. Wenn Sie die Ausgabe remote umleiten möchten, setzen Sie das Umleitungssymbol (normalerweise ">") in die Befehlsanführungszeichen.

Zum Beispiel:

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

Zum lokalen Speichern der Ausgabe auf einem Windows-Host

ssh remote_host "ls" > .\file_on_local_host.txt

Um stderr aus der Ferne zu kombinieren und es und stdout lokal zu speichern,

ssh remote_host "ls 2>&1" > .\combined_output_on_local_host.txt
kmarsh
quelle
Ist es möglich, dies mit putty.exe zu tun? Das heißt, Sie arbeiten als "normales" CLI-Programm im Gegensatz zum Standard, bei dem ein Terminal emuliert wird.
Cristi Diaconescu
Ich habe in ein Windows 2003-System geputtet und die Befehlszeile ausgeführt, ja. Auf dem Host wurde 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
1
Dies funktioniert auch auf einem lokalen Computer, der nicht von Windows stammt.
Shiri
Mit Ausnahme des Backslash-Pfades, ja.
kmarsh
20

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

Wenn ich es benutze, könnte ich dies tun cmd.exeund die Remote-Befehlsausgabe lokal speichern.

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

Das Beste daran ist, dass dies sowohl für ssh als auch für telnet funktioniert !

Dies sind nur zu Referenzzwecken 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)
Cristi Diaconescu
quelle
3

Ja, wenn Sie den putty ssh-Client verwenden, sehen Sie eine Befehlszeilenausgabe, die Ihr Skript erzeugt. Um den Exit-Code nach dem Ausführen des Skripts abzurufen, geben Sie Folgendes ein:

echo $?
Kennzeichen
quelle
1

Eine andere Möglichkeit, die Protokolldatei auf Ihrem Windows-Computer abzurufen, besteht darin: - Windows m / c auf einem Unix-System zu mounten (je nach UNIX-Version kann dies über einen Samba-Server erfolgen) - das Skript unter Windows mit einem beliebigen Remote-Client auszuführen Skript-Log in das gemountete Verzeichnis

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

James
quelle
0

Noch eine Antwort:

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

plink.exe -ssh -pw passwd [email protected] output.txt

passwd == Passwort für die Geräteanmeldung

uname == Benutzername für die Geräteanmeldung

1.2.3.4 == Geräte-IP-Adresse

Nachdem dieser Befehl ausgeführt wurde, werden alle Ihre 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 die Dateien plink.exe und cmdlist.txt im selben Verzeichnis befinden und Sie die DOS-Eingabeaufforderung auf dasselbe Verzeichnis verweisen.

manjesh23
quelle