Exécuter un script à distance sous Unix, obtenir une sortie localement?

45

J'ai besoin d'exécuter un script (Tcl ou autre) sur une machine Unix distante, à partir d'un shell de commande Windows (local), et je veux que le stdout / stderr du script s'affiche dans la CLI de Windows. Le code de sortie serait également utile.

Est-ce possible d'utiliser ssh (mastic)? Ou par tout autre moyen?

Merci!

Cristi Diaconescu
la source

Réponses:

44

C'est la valeur par défaut pour SSH. Si vous souhaitez rediriger la sortie à distance, placez le symbole de redirection (généralement ">") entre les guillemets.

Par exemple:

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

Pour enregistrer la sortie localement sur l'hôte Windows,

ssh remote_host "ls" > .\file_on_local_host.txt

Pour combiner stderr à distance et le sauvegarder avec stdout localement,

ssh remote_host "ls 2>&1" > .\combined_output_on_local_host.txt
kmarsh
la source
Est-il possible de faire cela avec putty.exe? Cela fonctionne comme un programme CLI "normal" par opposition au programme par défaut qui consiste à émuler un terminal.
Cristi Diaconescu
J'ai intégré un système Windows 2003 et une ligne de commande, oui. La version du serveur SSH de HP était installée sur l'hôte afin de prendre en charge leurs outils d'administration système. Si vous avez seulement un client SSH, tout est en cours d'exécution sur le système distant.
kmarsh
1
Cela fonctionne aussi pour une machine locale non-Windows.
Shiri
Sauf pour le chemin de la barre oblique inverse, oui.
kmarsh
20

Ce que je cherchais, c'est le side-kick de mastic , plink.exe . Contrairement à putty, qui agit comme un émulateur de terminal, plinkagit comme un programme CLI normal (non interactif).

En l'utilisant, je pouvais le faire cmd.exeet obtenir le résultat de la commande à distance enregistré localement.

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

Mieux encore, cela fonctionne pour ssh ainsi que telnet !

Juste pour référence, voici les options disponibles:

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
la source
3

Oui, si vous utilisez le client putty ssh, vous verrez toutes les sorties de ligne de commande que votre script produira. Pour obtenir le code de sortie après l'exécution du script, tapez:

echo $?
marque
la source
1

Pour obtenir le fichier journal sur votre machine Windows, vous pouvez également: - monter Windows m / c sur un système Unix (en fonction de la saveur de UNIX, cela pourrait être possible à l'aide du serveur Samba) - exécuter le script à partir de Windows à l'aide de n'importe quel client distant journal de script dans le répertoire monté

Vous pouvez voir la sortie en direct si vous obtenez l'équivalent UNIX de tail pour Windows .

James
la source
0

Une autre réponse:

Enregistrez toutes vos commandes linux dans le fichier cmdlist.txt et utilisez la commande ci-dessous.

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

passwd == mot de passe pour la connexion de l'appareil

uname == nom d'utilisateur pour l'identifiant de l'appareil

1.2.3.4 == adresse IP du périphérique

Une fois cette commande exécutée, toutes vos commandes cmdlist.txt seront exécutées sur le périphérique distant et la sortie sera enregistrée dans le fichier nommé output.txt.

Assurez-vous de conserver les fichiers plink.exe et cmdlist.txt dans le même répertoire et que vous dirigez votre invite DOS vers le même répertoire.

manjesh23
la source