5-comandos-sysadmin-windows

5 comandos mais usados pelo SysAdmin Windows

Neste post vou apresentar os 5 comandos que considero serem os mais usados pelo sysadmin de redes Windows.

Os comandos que vou descrever são comandos padrão do sistema operacional, ou seja, não é necessário a instalação de nenhum pacote adicional de ferramentas em seu computador Windows.

Os comandos

Para adiantar já relaciono abaixo quais os comandos que considero mais úteis para o sysadmin Windows e que serão descritos neste post.
Assim, caso esteja com pouco tempo, pode ir direto para o comando que mais interessar.

  1. ping
  2. qwinsta
  3. rqwinsta
  4. netstat
  5. wmic

Entretanto, seria recomendável que você lesse todo o post, pois sempre existe a possibilidade de ele conter alguma nova informação ou outra forma de uso desconhecida para um comando que você já utiliza.




1.comando PING

Um dos comandos mais conhecidos e utilizados não só por administradores de rede, mas também por vários usuários com um pouco mais de conhecimento. O ping está presente na maioria dos sistemas operacionais e também embutido em alguns equipamentos de rede como roteadores e firewalls.

Seu funcionamento, em resumo, está baseado na utilização de um protocolo chamado de ICMP para enviar pacotes em direção a um determinado destinatário, o equipamento que está sendo “pingado”. Este por sua vez, ao receber estes pacotes, devolve ao remetente alguns pacotes de resposta, indicando que está ativo.

Desta forma, este comando é utilizado para testar a conectividade de um equipamento com a rede. Porém, fique avisado de que existem algumas limitações para este uso, vou indicá-las mais abaixo neste texto.

Antes, porém, vamos ver que este é um comando bem versátil e que pode ser usado para outras tarefas além do mero teste de conectividade.

Teste de conectividade

Este é uso mais comum do ping, para isto basta digitar o comando seguido do nome ou endereço ip do elemento de rede cuja conectividade deseja testar.

Na tela abaixo vemos um exemplo da saída produzida pelo comando: ping google.com

Examinado a tela vemos que a saída contém uma Resposta de … indicando que o elemento que foi testado está ativo.

Caso a saída do comando apresentasse algo como: Esgotado o tempo limite…, isso indicaria que não foi recebida nenhuma resposta por parte do elemento testado, representando, na maioria dos casos, que o mesmo está sem conectividade com a rede.

Por padrão o comando ping enviará uma quantidade predeterminada de pacotes, esta dependerá do sistema operacional.

Este comportamento, quantidade de pacotes enviados, poderá ser alterado passando alguns parâmetros adicionais para o comando.

Para o sistema Windows, alguns destes parâmetros são:

-t: executa o comando e envia pacotes continuamente até que seja interrompido pelo usuário através de um Ctrl+C.

-n quantidade: define a quantidade de pacotes que será enviada, assim o comando: ping google.com -n 16, fará com que sejam enviados 16 pacotes ao google.com.

Resolução de nomes

Um outro uso possível para o comando ping é a resolução de nome, por exemplo, em uma situação em que você sabe apenas o endereço ip de uma estação e quer descobrir seu nome.

Neste caso, utilizando o parâmetro -a o comando tentará descobrir o nome do destinatário antes de enviar os pacotes.

Na tela abaixo vemos a saída do comando: ping -a 172.26.6.71

Examinado a tela vemos que, partindo do endereço ip 172.26.6.71, o comando conseguiu obter o nome da estação que neste caso é csti01 (por questões de segurança omiti o restante do nome).

Note, porém, que o bom funcionamento deste comando dependerá diretamente de como está configurada a resolução de nomes em sua rede.

Descoberta do sistema operacional

Outra possibilidade de uso do comando é usar o ping para identificar o sistema operacional. Isto pode ser feito examinando-se o valor do campo TTL.

Cada sistema operacional possui sua própria implementação do comando ping e, por este motivo, pode definir um valor diferente para o campo TTL.

Assim, o valor do campo TTL é um indicativo de qual sistema operacional está sendo usado no computador de destino, sendo valores comuns os seguintes:

  • Linux: 64
  • Windows: 128
  • UNIX: 255

Na tela abaixo vemos o resultado de duas execuções consecutivas do comando ping em direção a computadores com sistemas operacionais diferentes.

Na primeira delas, examinado o valor de TTL, vemos que corresponde a 64, e podemos concluir que são grandes as chances de se tratar de um servidor com o sistema operacional Linux.

Em seguida, na próxima execução, podemos ver que o valor do TTL agora é 128, e isto indica que provavelmente estamos diante de um computador com sistema operacional Windows.

Vale dizer que o valor do TTL será decrementado de 1 sempre que o pacote do ping for encaminhado para um roteador diferente em seu caminho até o destino.

Assim, em vez de, por exemplo 128, poderá ser 127 ou 126, caso a partir de sua origem passe, respectivamente, por um ou dois roteadores diferentes.




Limitações do ping

Inegavelmente este comando é muito útil para o administrador de redes, contudo é recomendável que se tenha em mente que o ping tem algumas limitações.

Uma delas é a possibilidade de bloqueio do protocolo ICMP no firewall do destinatário, ou até mesmo nos roteadores, pois caso haja um bloqueio ativo o comando ping não receberá a resposta mesmo que o destinatário esteja ligado e com conectividade na rede.

Assim, mesmo que não haja resposta ao ping não podemos afirmar com 100% de certeza que o destinatário está desligado ou fora da rede.

Além disso, ao utilizar o comando para resolução de nomes, saiba que obter um nome correspondente ao endereço IP fornecido dependerá do mecanismo usado para resolver nomes: servidores DNS e/ou Wins; arquivo de configuração lmhosts etc.

Em especial, quando se trata de sites localizados na internet podem ocorrer algumas situações em que um endereço IP corresponda a vários nomes, ou, ainda que um nome corresponda a vários endereços IP.

Desta forma, é recomendado o uso do ping para esta finalidade (resolver nomes) apenas em redes locais.

2.comando QWINSTA

A função deste comando é descobrir qual usuário fez o login e está utilizando uma determinada estação em uma rede Windows. Para que ele funcione em sua rede as estações devem estar com os serviços de terminal ativados (acesso remoto ou assistência remota).

A sintaxe mais simples do comando é qwinsta /server:estacao, substituindo estacao pelo nome do computador que deseja consultar.

Na imagem abaixo está ilustrada a execução do comando em consulta a uma estação de trabalho.

Figura 1: Execução do comando qwinsta

Observando a tela acima podemos ver que na referida estação quem está logado e usando o computador naquele momento é usuário 603, pois sua sessão está identificada como console e o estado Ativo.

Consta outro usuário, número 786, que também fez logon nesta mesma estação, porém sem fazer o logoff, sendo que sua sessão foi suspensa, não está ativa e por este motivo o estado (STATE) é Disco.

Vale dizer que o propósito deste comando não é listar o histórico de todos os usuários que fizeram o logon em uma determinada estação, e sim exibir as sessões de login atual e o estado das mesmas.

Neste post escrevi especificamente sobre como usar o qwinsta.

3.comando RWINSTA

Este comando é usado para resetar, ou redefinir, uma determinada sessão cliente dos serviços de terminal em uma máquina que esteja desempenhando o papel de servidor. Na prática o que ocorre é que o cliente em questão é desconectado, ou seja, o usuário é “derrubado”, do servidor e os respectivos recursos que estejam sendo consumidos são liberados.

A sintaxe do comando é

rwinsta sessão_id /server:nome_servidor
  • sessão_id : é a identificação, nome ou número de identificação, obtidos com o comando qwinsta.
  • nome_servidor : nome do computador, estação de  trabalho ou servidor, ao qual o usuário está conectado e de onde queremos que seja desconectado.

Como já deve ter presumido, o comando rwinsta deve ser utilizado em conjunto com o comando qwinsta, usando este para listar os usuários e as respectivas identificações de sessão e, em seguida, já sabendo o id da sessão, usando o rwinsta para desconectá-la.

O comando rwinsta é muito útil para liberar recursos de sessões que já foram desconectadas pelo usuário, mas que permanecem consumindo recursos.

Isto ocorre quando a conexão ao servidor é interrompida bruscamente, seja por uma queda na conexão de rede e/ou internet, ou quando o usuário não faz o logoff devidamente e apenas fecha a janela do cliente de conexão remota.

Em ambos os casos o usuário ficará no modo desconectado, ou seja, o estado da conexão será Disco (vide comando qwinsta acima), porém ainda consumindo recursos, como memória e disco, do servidor de serviços de terminal.




4. comando NETSTAT

O netstat é um comando usado como ferramenta de diagnóstico para verificar como está o tráfego de rede no computador local.

Com ele é possível exibir as conexões TCP ativas, as portas nas quais o computador está escutando, as estatísticas de Ethernet, a tabela de roteamento de IP.

Podem ser emitidas em separado as estatísticas IPv4 (para os protocolos IP, ICMP, TCP e UDP) e IPv6 (para os protocolos IPv6, ICMPv6, TCP sobre IPv6 e UDP sobre IPv6).

O comando, que também existe nos sistemas Linux, estará disponível em sistemas Windows apenas se o protocolo TCP/IP estiver instalado como um componente nas propriedades de um adaptador de rede em conexões de rede.

A sintaxe mais fácil é digitar somente netstat, sem parâmetros, o que fará com que sejam exibidas todas as conexões TCP ativas.

Este é um comando que possui muitas opções e cuja saída pode ser muito extensa de forma que, para facilitar a análise, pode-se salvar a saída em um arquivo de texto, ou então, usar um comando de filtro, como por exemplo o find, para encontrar o elemento desejado.

Principais parâmetros

Abaixo relacionei os parâmetros que considero mais úteis:

  • -r : exibe o conteúdo da tabela de roteamento de IP, é equivalente ao comando route PRINT.
  • -a : exibe todas as conexões TCP ativas e as portas TCP e UDP nas quais o computador está escutando.
  • -s : exibe estatísticas por protocolo, sendo o padrão que sejam mostardas as estatísticas para os protocolos TCP, UDP, ICMP e IP. Caso se deseja as estatísticas de um protocolo específico pode ser usado em conjunto com o parâmetro -p.
  • -p <protocolo> : mostra as conexões para o protocolo especificado pelo parâmetro <protocolo>. Nesse caso, o protocolo pode ser TCP, UDP, TCPv6 ou UDPv6, e se for usado com -s para exibir as estatísticas por protocolo, o protocolo poderá ser ICMP, IP, ICMPv6 ou IPv6.
  • -n : exibe conexões TCP ativas, no entanto, endereços e números de porta são expressos numericamente e nenhuma tentativa é feita para determinar nomes.
  • -o : exibe conexões TCP ativas e inclui a ID do processo (PID) para cada conexão. Você pode encontrar o aplicativo com base na PID na guia processos no Gerenciador de tarefas do Windows. Esse parâmetro pode ser combinado com -a, -n e -p.
  • -b : exibe o nome do arquivo executável envolvido na criação de cada conexão ou porta de escuta. Sua execução pode ser demorada e exigirá permissões de Administrador para que funcione.

Em seguida apresento alguns exemplos de uso para o comando netstat usando os parâmetros citados acima.

Tabela de roteamento

Para listar a tabela de roteamento use o comando desta forma:

netstat -r

Vemos abaixo uma ilustração da saída exibida pelo comando:

A execução deste comando irá primeiro listar todas as interfaces de rede do computador e em seguida as tabelas de rotas referentes aos protocolos IPv4 e depois, caso esteja ativo, a tabela do protocolo IPv6.

Estatísticas de rede

No exemplo abaixo o comando foi usado para exibir as estatísticas (-s) do protocolo ICMP (-p icmp):

netstat -s -p icmp

A tela acima ilustra a duas execuções do comando, na primeira vemos que foram exibidas as estatísticas referentes aos protocolo ICMP, e na segunda execução referente ao protocolo IPv6.

Checagem das portas

Neste exemplo vamos executar o comando para checar quais as portas abertas, quais as conexões ativas e quais os identificadores de processos (PID) responsável pela conexão.

Isto é feito usando neststat com vários parâmetros ao mesmo tempo, conforme a linha de comando abaixo:

netstat -ano

Abaixo vemos a saída do comando:

Examinando a tela constatamos que na primeira coluna está o protocolo, que no caso é o TCP; na segunda coluna o endereço local e na terceira coluna o endereço externo; as portas são os números que vem após o sinal de dois pontos (:).

Prosseguindo, temos a quarta coluna que indica o estado da conexão e a quinta coluna que indica o número do processo responsável pela conexão.




5. comando WMIC

Entre os 5 comandos mais usados pelo sysadmin Windows não poderia faltar o wmic. Este é um dos comandos mais úteis e poderosos do Windows. Seu funcionamento é baseado no sistema WMI que é a sigla para Windows Management Instrumentation.

Consiste em um padrão desenvolvido e implementado pela Microsoft para permitir acesso às informações e notificações de computadores que fazem uso dos sistemas operacionais Windows, sejam estações de trabalho ou servidores.

Com o WMI a Microsoft pretendeu complementar padrões já existentes, como o DMI e o SNMP, e que já eram utilizados com a finalidade de prover informações, respectivamente, a respeito de computadores e ativos de rede.

No padrão WMI todas as informações de um equipamento estão organizadas de forma estruturada e para acessá-la basta realizar consultas (query) usando a linguagem WSQL, que é um pequeno subconjunto da linguagem SQL com comando adequados a este contexto.

O comando wmic é o que permite acesso a estrutura WMI usando a linha de comando (WMI command-line).

Conforme já mencionei, trata-se de um comando extremamente poderoso e que, por isso, demanda um artigo separado somente para tratar dele.

Assim, neste post iremos somente arranhar a superfície exibindo duas utilizações possíveis para o comando wmic.

Listar os softwares instalados no computador

Um primeiro exemplo de uso para o wmic é listar os softwares instalados no computador local. Para isto basta digitar o comando abaixo:

wmic product get name, version

Abaixo vemos a saída típica de uma execução do comando:

wmic-listar-programas-instalados-computador
Usando o wmic para listar os programas instalados no computador

Foram listados os atributos name e version do objeto product, estando disponíveis outros atributos, como por exemplo a data de instalação (atributo installDate).

Desta forma, o comando poderia, por exemplo, ser incluído em um script para verificar se um determinado software está instalado nas máquinas de sua rede Windows.

Exibir o número de série de um computador remoto

Outro exemplo de uso do comando wmic seria para exibir o número de série de um computador. Para isto basta digitar o comando abaixo:

wmic bios get serialnumber

De forma semelhante ao exemplo anterior o comando é usado para acessar informações de um determinado objeto, que neste caso é o bios, e dele extrair a informação de número de série.

Um uso mais interessante deste comando seria utilizar o parâmetro node para verificar, de forma remota, o número de série de um outro computador diferente daquele em que o comando está sendo utilizado.

Para isto basta usar o comando no formato abaixo:

wmic /user:[usuario] /password:[senha] /node:[computador] bios get serialnumber

onde,

[usuario] – é o nome de um usuário que possua privilégios administrativos para executar esta consulta;

[senha] – a senha do usuário mencionado acima;

[computador] – nome ou endereço ip do computador cujo número de série deseja obter.

Abaixo temos a execução do comando duas vezes, na primeira consultamos o número de série do computador local e na segunda de um computador remoto.

wmic-exibir-numero-serie-computador
Usando o wmic para exibir o número de série do computador

Neste outro post demonstro como escrever um script usando este comando para exibir o número de série de um computador. Uma sugestão para seu uso seria em um script de logon que registrasse os números de série dos computadores da rede Windows.

Saiba mais

Se quiser se aprofundar nos comandos seguem abaixo alguns links de referência com mais informações sobre eles:
https://gallery.technet.microsoft.com/70-410-Ping-Nslookup-e4599d24
https://docs.microsoft.com/pt-br/windows-server/administration/windows-commands/netstat
https://docs.microsoft.com/pt-br/windows-server/administration/windows-commands/wmic

Concorda que são os 5 mais usados? Acha que faltou algum comando ou alguma informação? Deixe sua opinião e comentários.

Voltar ao início