Skript unter Unix remote ausführen, Ausgabe lokal erhalten?

Skript unter Unix remote ausführen, Ausgabe lokal erhalten?

Ich muss ein Skript (Tcl oder was auch immer) auf einem Remote-Unix-Rechner von einer (lokalen) Windows-Eingabeaufforderung aus ausführen und möchte, dass die Standardausgabe/Standardfehlerausgabe des Skripts in der Windows-Befehlszeilenschnittstelle angezeigt wird. Der Exit-Code wäre auch nützlich.

Ist dies mit SSH (Putty) möglich? Oder auf andere Weise?

Antwort1

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

Zum Beispiel:

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

Um die Ausgabe lokal auf einem Windows-Host zu speichern,

ssh remote_host "ls" > .\file_on_local_host.txt

Um stderr remote zu kombinieren und es und stdout lokal zu speichern,

ssh remote_host "ls 2>&1" > .\combined_output_on_local_host.txt

Antwort2

Was ich suchte, ist Puttys Sidekick,plink.exeIm Gegensatz zu Putty, das wie ein Terminalemulator funktioniert, plinkverhält es sich wie ein normales (nicht interaktives) CLI-Programm.

Damit konnte ich dies tun cmd.exeund die Ausgabe des Remote-Befehls lokal speichern.

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

Das Beste daran: Dies funktioniert fürsshsowieTelnet!

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)

Antwort3

Ja, wenn Sie den Putty-SSH-Client verwenden, sehen Sie alle Befehlszeilenausgaben, die Ihr Skript erzeugt. Um den Exit-Code nach der Ausführung des Skripts zu erhalten, geben Sie Folgendes ein:

echo $?

Antwort4

Noch eine Antwort:

Speichern Sie alle Ihre Linux-Befehle incmdlist.txtDatei und verwenden Sie den folgenden Befehl.

plink.exe -ssh -pw passwd[email geschützt] Ausgabe.txt

passwd==Passwort für die Geräteanmeldung

dein Name==Benutzername für die Geräteanmeldung

1.2.3.4==IP-Adresse des Geräts

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 plink.exe und cmdlist.txt im selben Verzeichnis befinden und dass Ihre DOS-Eingabeaufforderung auf dasselbe Verzeichnis verweist.

verwandte Informationen