65 votes

Exécuter à distance script sur Unix, obtenir la sortie localement ?

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

Est-ce possible en utilisant ssh (putty) ? Ou par tout autre moyen ?

Merci !

56voto

dequin Points 113

C'est la valeur par défaut pour SSH. Si vous voulez rediriger la sortie à distance, mettez le symbole de redirection (typiquement ">") à l'intérieur des guillemets de la commande.

Par exemple :

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

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

ssh remote_host "ls" > .\file_on_local_host.txt

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

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

20voto

scouser73 Points 4316

Ce que je cherchais, c'était l'acolyte de Putty, plink.exe . Contrairement à putty, qui agit comme un émulateur de terminal, plink se comporte comme un programme CLI normal (non interactif).

En l'utilisant, je pourrais faire cela dans cmd.exe et obtenir la sortie de la commande à distance enregistrée localement.

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

Le meilleur de tous, c'est que cela fonctionne pour ssh ainsi que telnet !

À titre de 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)

3voto

Simon Johnson Points 4641

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

echo $?

1voto

James Points 545

Une autre façon d'obtenir le fichier journal sur votre machine Windows est : - monter le m/c Windows sur un système Unix ( en fonction de la saveur de l'UNIX, cela pourrait être possible en utilisant un serveur Samba ) - exécuter le script à partir de Windows en utilisant n'importe quel client distant - faire en sorte que le script s'enregistre dans le répertoire monté.

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

0voto

manjesh23 Points 1608

Une réponse de plus :

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

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

passwd \== mot de passe pour la connexion au dispositif

uname \== nom d'utilisateur pour la connexion au dispositif

1.2.3.4 \== adresse IP du dispositif

Après l'exécution de cette commande, toutes vos commandes cmdlist.txt seront exécutées sur l'appareil distant et les résultats seront enregistrés dans le fichier appelé output.txt.

Assurez-vous que le fichier plink.exe et cmdlist.txt se trouvent dans le même répertoire et que l'invite de DOS pointe vers le même répertoire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X