arquivo em lotes para desabilitar o compartilhamento de rede no Windows XP

2

Vagamente relacionado a esta questão Network Share fazendo com que o Cygwin seja executado lentamente após 'ls' Gostaria de escrever um pequeno arquivo em lotes que eu possa executar para desconectar o host de qualquer compartilhamento de rede e, posteriormente, outro arquivo em lotes para reconectar. Idealmente, isso seria algo que eu posso executar a partir de um terminal PuTTY, SSHed na caixa executando o cygwin.

Tenho certeza que os arquivos em lote podem ser gravados facilmente, mas eu não sei sobre executá-los a partir de um terminal PuTTY. Independentemente disso, eu ainda gostaria dos batchfiles de qualquer maneira.

Por uma questão de simplicidade, meu processo seria:

  1. Faça o login no servidor via PuTTY
  2. Executar arquivos em lote para desconectar compartilhamentos
  3. Faça o que eu preciso fazer
  4. Executar arquivos em lote para reconectar compartilhamentos
  5. Sair da sessão, fechando o PuTTY
Robb
fonte
Usando cmd /c <batchfilename> permite que um usuário do cygwin execute um arquivo em lote no sistema. Então, quando eu SSH em, eu apenas executar este comando para levar os compartilhamentos de rede para baixo e, em seguida, executar outro para trazê-los de volta se eu precisar.
Robb

Respostas:

2

Observe que o seguinte precisa ser executado com uma conta no grupo Administrador local e, de preferência, um que tenha acesso aos compartilhamentos que estão sendo mapeados.


Os comandos básicos

Para desconectar unidades:

net use /d * /y

Demolir:

  • net use é o utilitário para alterar os mapeamentos de unidade da rede a partir da linha de comando.
  • /d é para "excluir", para desconectar qualquer mapeamento de unidade especificado nos parâmetros de comando.
  • * é um curinga, para executar o comando em todos unidades atualmente mapeadas.
  • /y é para "sim", para ignorar a confirmação interativa do comando.

Para reconectar unidades:

net use [driveletter]: "\\[servername]\[sharename]\[subfolder-path]" /p:y

(Repita para cada mapeamento.)

Demolir:

  • net use - (Veja acima)
  • [driveletter]: - Substitua isto por qualquer letra de unidade que você queira usar. Remova os suportes, mantenha o cólon. Você pode remover isso completamente se não precisar associar o compartilhamento a uma letra de unidade.
  • "\\[servername]\ - Substitua isto pelo nome ou IP da máquina que hospeda o compartilhamento. Remova os suportes. Mantenha as barras invertidas. As aspas são opcionais se o caminho não incluir espaços.
  • [sharename] - Substitua isto pelo nome do compartilhamento que você está acessando. Remova os suportes.
  • \[subfolder-path] - (Opcional) Substitua isso pelo caminho restante para qualquer subpasta que você deseja que o mapeamento aborde. Deixe de fora se você quiser apenas que o mapeamento aponte para a raiz do compartilhamento. Remova os suportes. Use barras invertidas, quando apropriado.
  • " - Deixe a cotação de fechamento se você manteve a cotação de abertura. Remova o contrário.
  • /p:y - Isso é para "Persistente: SIM", o que significa que o mapeamento da unidade será mantido por meio de uma reinicialização.

Exemplo de arquivo em lote com comentários

REM The first line below keeps the batch commands from "echoing" on the command line.  Only command output is displayed.  Delete or comment out that line for debugging.
@echo off
REM The next command deletes all drive mappings.
net use /d * /y
REM The next two lines print a message stating what the previous line should have done (check command output to verify) and what the user should do next.
echo Drive mappings DELETED!
echo Press any key to restore drive mappings.
REM The next line pauses the batch job, pending user input.  Leave the batch window open, and go on to do your work.  Return to the batch window and press any key to continue.
PAUSE
REM The next command is an example of connecting to a share path that does not include subfolders or spaces, and will not be mapped to a drive letter.
net use \\myserver\logs
REM This next command is an example of mapping a drive letter to a path that includes a subfolder, but no spaces.
net use R: \\myserver\myapp\reports /p:y
REM This next command is an example of mapping a drive letter to a path  that does include sub-folders and spaces.  Note the requisite quotation marks.
net use P: "\\myserver\c$\Program Files\My Application\"
REM The next two lines print messages similar to the previous two "echo" commands, this time informing the user that the drives should be re-mapped.
echo Drive mappings RESTORED!
echo Press any key to exit.
REM This last line inserts a final pause in the batch job.  Use this opportunity to check the command output and verify that the previous commands completed succesfully.
PAUSE
REM The batch window should automatically exit after this, or return to the command prompt if the file was run from within an existing console.

Observe que isso pode ser facilmente dividido em dois arquivos de lote separados, se necessário, com a divisão colocada imediatamente após o primeiro PAUSE. Eu recomendo fortemente manter o PAUSE comandos nas extremidades dos arquivos em lote, mesmo que sejam divididos, para que você possa confirmar se os comandos em lote foram bem-sucedidos antes de sair.


Mapeando como outro usuário

Se você não puder executar o net use comando como um usuário com acesso aos compartilhamentos, um parâmetro adicional e mais interação com o usuário serão necessários para cada mapeamento.

Nenhum parâmetro adicional é necessário para excluir mapeamentos de unidade.

Para reconectar unidades como um usuário diferente, adicione o seguinte parâmetro a cada comando:

/user:[domain\username]

OU

/user:[username@domain]

EXEMPLOS:

net use R: \\myserver\reports /user:mydomain\me /p:y

OU

net use P: "\\myserver\c$\Program Files\My Application" /user:mysubdomain.mydomain.tld\me /p:y

OU

net use \\myserver\logs /user:[email protected] /p:y

Para cada mapeamento, você deverá inserir sua senha. Eu acredito que há um parâmetro adicional disponível que permite incluir sua senha no comando. No entanto, como os arquivos em lote são armazenados em texto não criptografado, fortemente recomendar contra usá-lo.

Iszi
fonte
3

Tente isso - não tem idéia de como ele vai funcionar no Cygwin ... mas esse é o BATCH que deve funcionar se for executado normalmente no Windows.

REM Delete all existing connections
NET USE * /DELETE /Y
REM Map connections to the X, Y, Z letters for the shares
NET USE X: \\SERVER1\SHARE1
NET USE Y: \\SERVER1\SHARE2
NET USE Z: \\SERVER2\SHARE1
Multiverse IT
fonte
+1 Bata-me a ele ... Engraçado, estava lá por uma hora, então nós dois devemos ter notado isso.
KCotreau
Pergunta estúpida, mas se eu não mapear especificamente esses compartilhamentos para drives, esse lote ainda funcionará? O que quero dizer é que eu nunca mapeei as ações, a primeira parte do lote ainda terá sucesso?
Robb
@Robb - Se você só precisa reconectar os compartilhamentos, e não mapeá-los para letras, você pode pular as letras da unidade.
Iszi