execução de comandos remotos no servidor Windows 2003

6

Eu tenho um único comando que gostaria de executar em um servidor Windows 2003 remoto.

Eu tentei o wmic, que funciona, mas a única maneira de exibir a saída padrão é redirecioná-lo para um arquivo local e listar o arquivo local (meio desajeitado).

Eu também tentei psexec, mas isso parece ter problemas de trabalho com servidores Windows 2003 (pelo menos, é relatado que a versão mais recente faz - e versões mais antigas não estão disponíveis).

Eu estava tentando ficar longe do utilitário rcmd do Windows porque acredito que há um componente do servidor que precisa ser instalado e não queria fornecer acesso geral à linha de comando para a máquina.

Existem outras sugestões de ferramentas ou utilitários que me permitiriam comandos específicos em uma máquina remota.

Nota:

Aqui está um exemplo muito simples que eu estava usando na tentativa de fazer o PsExec funcionar:

C:\Program Files\SysInternalsSuite>psexec \remote-svr -i -u MyUsername D:\Public\do.bat

PsExec v1.95 - Execute processes remotely
Copyright (C) 2001-2009 Mark Russinovich
Sysinternals - www.sysinternals.com

Password:

D:\Public\do.bat exited on remote-svr with error code 1.

Meu arquivo do.bat de amostra é trivial e contém apenas a seguinte linha:

copy dg.bmp dg1.bmp

O arquivo de origem dg.bmp está presente na máquina remota, o arquivo de destino não está. Eu tenho acesso de gravação para a máquina remota.

Quando executo o comando PsExec acima, o arquivo do.bat não é executado (embora eu tenha privilégios no servidor remoto) e não recebo a saída para o console que eu esperava. Eu gosto da idéia de usar o PsExec, então se houver alguma dica sobre o que eu possa estar fazendo de errado, eu gostaria de ouvi-los.

Obrigado ...

    
por Steve Hawkins 26.06.2009 / 23:44

8 respostas

7

Quais problemas você está enfrentando com o PSExec e o W2k3? Nós usamos os dois juntos extensivamente, em um ambiente de servidor 500+ W2k3 ...

Na verdade, toda a suíte PSTools agita meu mundo.

EDITAR:

Este é um acompanhamento da sua edição do tíquete original.

O problema que você está encontrando é que "copy" é uma função do CMD.exe. Não existe como seu próprio executável por si só. O mesmo que não há Del.exe, ou MD.exe, etc.

Se você quer que seu exemplo funcione, você precisa invocar o CMD via PSexec e passar o comando copy para ele. Aqui está um exemplo:

psexec -u MyDomain\MyUsername -p MyPassword \MyServer cmd.exe /c copy c:\sys\util\monitor_localhost.bat blah.bat

O resultado é o seguinte:

==================================
PsExec v1.86 - Execute processes remotely Copyright (C) 2001-2007 Mark Russinovich Sysinternals - www.sysinternals.com

1 file(s) copied. cmd.exe exited on fcgwnt53 with error code 0.
==================================
    
por 27.06.2009 / 01:40
3

O Arsenal de Administração permite que você execute comandos remotos para um, alguns ou todos os seus sistemas Windows. É grátis tentar.

Depois de selecionar o (s) computador (es) para executar o comando, basta selecionar Ferramentas - > Comando Remoto e você está no seu caminho.

    
por 27.06.2009 / 02:12
2

A maneira de executar o comando remotamente em um ambiente Windows é com Winrm e WINrs. Consulte Como habilitar o Shell Remoto do Windows e Como o WinRM & O WinRS pode ajudá-lo, como habilitá-lo e exemplos de como você pode usá-lo.

    
por 27.06.2009 / 00:23
0

Os comandos padrão podem ser executados por meio do telnet, que é desabilitado em todas as estações de trabalho da Microsoft por padrão, mas podem ser habilitados por meio do GPO e adicionando um usuário ao grupo de objetos 'Usuários do Telnet'. Isso deve ser suficiente para a maioria dos comandos do sistema.

    
por 27.06.2009 / 00:48
0

Você pode querer experimentar a opção "-c" para o psexec. Ele copiará o arquivo para o sistema remoto e o executará, caso contrário, ele esperará que ele esteja presente no sistema remoto. Então, algo como (copie o do.bat para o sistema local c: e depois):

psexec -c \ remote-svr -i -u MyUsername c: \ do.bat

Além disso, por que você quer que isso interaja com a sessão da área de trabalho do sistema remoto (a opção -i)?

hth, ~ H

    
por 27.06.2009 / 13:07
0

Seu comando genérico assume que o do.bat está presente localmente no servidor remoto no local especificado. Se não for esse o caso, você pode pedir ao psexec.exe para copiar o arquivo da sua máquina local para a máquina remota usando a opção -C e depois executá-lo.

Além disso, conforme indicado, se você não estiver fazendo nada interativo com script, não inclua a opção -I.

Eu tentei o beyondexec.exe, é um bom substituto para o psexec.exe.

Mas eu prefiro psexec.exe como agora é fornecido através da Microsoft, então é mais fácil justificar sua existência em servidores para falcões de segurança.

    
por 27.06.2009 / 01:53
0

Eu posso estar errado, mas o PS 2.0 não permite comandos remotos e somente PS 1.0 local?

    
por 27.06.2009 / 20:25
-1

Eu não posso dizer que já tentei isso em uma máquina Windows, mas no Linux você pode restringir os comandos que o ssh pode executar através do uso do script Authprogs.

Eu coloquei a versão HP do ssh na maioria dos meus sistemas Windows para uso de linha de comando remoto. Eu achei que é muito fácil de instalar em comparação com algumas das outras distribuições do ssh para o Windows lá fora. Google "SP25021" para encontrar o instalador fornecido pela HP.

Tenho certeza de que há versões muito mais recentes do sshd para Windows disponíveis. Aconselho que utilize a última versão possível se os seus sistemas não estiverem atrás de alguns firewalls sérios.

Consulte: Restringindo comandos SSH link

    
por 27.06.2009 / 01:29