none
Login Script – Aplicar .BAT em usuários específicos. RRS feed

  • Pergunta

  • Saudações,

    Preciso de um script que faça execução de uma .bat quando for tal usuário que estara se autenticando;

    Se usuario "PAC"

    COPY "\\" + LTRIM(SUBSTR(@USERID, 1, 3)) + "_SERVER\PACOTES$\Script_Loja\xcacls.exe" "C:\windows\system32\"

    COPY "\\" + LTRIM(SUBSTR(@USERID, 1, 3)) + "_SERVER\PACOTES$\Script_Loja\SetACL" "C:\windows\system32\"

    Depois executar as seguintes bats:

    shell ("\\" + LTRIM(SUBSTR(@USERID, 1, 3))+"_SERVER\PACOTES$\Script_Loja\ta\ta.bat")

    shell ("\\" + LTRIM(SUBSTR(@USERID, 1, 3))+"_SERVER\PACOTES$\Script_Loja\tb\tb.bat")

    Porem preciso que ele faça uma checagem no proximo logon, nao pode executar a bat cada vez que o usuario autenticar por dia, pois existem necessidades de varias autenticações diárias.

    Este script sera para dar permissao em arquivos de alguns softwares pois sera removido privilegio administrativo do desktop e alguns softwares precisam destes privilegios nos usuarios autenticados.

    alguém tem um exemplo ai? eu já procurei aqui no fórum mão não achei.

    OBS: Aceito sujestões em forma de CASE, script será executado via KIX.EXE

    Obrigado

    Adriano

     

    adrianoguarato@terra.com.br

    sexta-feira, 5 de novembro de 2010 18:44

Respostas

  •  

    Primeiro) Tratando o usuário:

    IF @Userid ="PAC"
     COPY "\\" + LTRIM(SUBSTR(@USERID, 1, 3)) + "_SERVER\PACOTES$\Script_Loja\xcacls.exe" "C:\windows\system32\"

     COPY "\\" + LTRIM(SUBSTR(@USERID, 1, 3)) + "_SERVER\PACOTES$\Script_Loja\SetACL" "C:\windows\system32\"
    ENDIF

    Segundo) Rodando script apenas uma vez por dia. Neste caso eu crio um arquivo no final da execução contendo a data em que ele foi executado, da proxima vez que o script for executa eu abro este arquivo (C:\temp\teste.txt) e verifico se a data é a mesma, se for eu saio do script.

    ;EXISTE ARQUIVO DE CONTROLE COM DATA DE HOJE?
    $x=""
    IF Open(3, "C:\TEMP\TESTE.TXT") = 0
     $x = ReadLine(3)
     ;WHILE @ERROR = 0
     ; $x = ReadLine(3)
     ;LOOP
     Close (3)
    ENDIF
    
    
    
    IF $x=@DATE
    	EXIT
    ENDIF
    
    
    IF @Userid ="PAC"
    	COPY "\\" + LTRIM(SUBSTR(@USERID, 1, 3)) + "_SERVER\PACOTES$\Script_Loja\xcacls.exe" "C:\windows\system32\"
    
    	COPY "\\" + LTRIM(SUBSTR(@USERID, 1, 3)) + "_SERVER\PACOTES$\Script_Loja\SetACL" "C:\windows\system32\"
    ENDIF
    
    
    shell ("\\" + LTRIM(SUBSTR(@USERID, 1, 3))+"_SERVER\PACOTES$\Script_Loja\ta\ta.bat")
    
    shell ("\\" + LTRIM(SUBSTR(@USERID, 1, 3))+"_SERVER\PACOTES$\Script_Loja\tb\tb.bat")
    
    
    ;CRIA ARQUIVO DE CONTROLE
    SHELL ("CMD /C ECHO " + @DATE + "> C:\TEMP\TESTE.TXT")
    
    

    Referencias: http://www.kixtart.org/binary/docs/KiXhelp453.zip


    Fábio de Paula Junior

    sexta-feira, 5 de novembro de 2010 19:19
    Moderador

Todas as Respostas

  •  

    Primeiro) Tratando o usuário:

    IF @Userid ="PAC"
     COPY "\\" + LTRIM(SUBSTR(@USERID, 1, 3)) + "_SERVER\PACOTES$\Script_Loja\xcacls.exe" "C:\windows\system32\"

     COPY "\\" + LTRIM(SUBSTR(@USERID, 1, 3)) + "_SERVER\PACOTES$\Script_Loja\SetACL" "C:\windows\system32\"
    ENDIF

    Segundo) Rodando script apenas uma vez por dia. Neste caso eu crio um arquivo no final da execução contendo a data em que ele foi executado, da proxima vez que o script for executa eu abro este arquivo (C:\temp\teste.txt) e verifico se a data é a mesma, se for eu saio do script.

    ;EXISTE ARQUIVO DE CONTROLE COM DATA DE HOJE?
    $x=""
    IF Open(3, "C:\TEMP\TESTE.TXT") = 0
     $x = ReadLine(3)
     ;WHILE @ERROR = 0
     ; $x = ReadLine(3)
     ;LOOP
     Close (3)
    ENDIF
    
    
    
    IF $x=@DATE
    	EXIT
    ENDIF
    
    
    IF @Userid ="PAC"
    	COPY "\\" + LTRIM(SUBSTR(@USERID, 1, 3)) + "_SERVER\PACOTES$\Script_Loja\xcacls.exe" "C:\windows\system32\"
    
    	COPY "\\" + LTRIM(SUBSTR(@USERID, 1, 3)) + "_SERVER\PACOTES$\Script_Loja\SetACL" "C:\windows\system32\"
    ENDIF
    
    
    shell ("\\" + LTRIM(SUBSTR(@USERID, 1, 3))+"_SERVER\PACOTES$\Script_Loja\ta\ta.bat")
    
    shell ("\\" + LTRIM(SUBSTR(@USERID, 1, 3))+"_SERVER\PACOTES$\Script_Loja\tb\tb.bat")
    
    
    ;CRIA ARQUIVO DE CONTROLE
    SHELL ("CMD /C ECHO " + @DATE + "> C:\TEMP\TESTE.TXT")
    
    

    Referencias: http://www.kixtart.org/binary/docs/KiXhelp453.zip


    Fábio de Paula Junior

    sexta-feira, 5 de novembro de 2010 19:19
    Moderador
  • Fábio, bom dia.

    Primeiramente obrigado pela ajuda, fico grato por ter ajudado com o script.

    Seguinte, existe alguma forma que me faça uma comparação de permissão ? nao gostaria de rodar este script quando o usuario fosse autenticado, pois ele precisa rodar apenas uma vez, após rodado, nao precisa mais, pois se trata de permissao de acesso em diretorios e registro, quando eu remover o acesso de administrador local do desktop, vai dar erro no login script, pois o usuario autenticado nao tera mais acesso para permissionar pastas e arquivos.

    Obrigado pela ajuda.

     

     

    segunda-feira, 8 de novembro de 2010 10:29
  • Possui dominio?

    Pode ser util:

    http://technet.microsoft.com/en-us/library/cc756952(WS.10).aspx


    Fábio de Paula Junior
    segunda-feira, 8 de novembro de 2010 15:16
    Moderador
  • Sim, mas por se tratar de Windows 2000 Server, nao confio em GPO.

    Por isso precisaria de uma forma mais fácil, pois pensa, mesmo que eu altere a validação para ANO, em janeiro eu terei problema de aplicar novamente as bats quando o usuario autenticar, como o usuario ja nao sera mais administrador local, pode travar o login scriot e ninguem mais mapear as unidades no logon, isso ira me gerar um grande problema.

     

    Alguma sugestão ?

    segunda-feira, 8 de novembro de 2010 16:05
  • Então não confira a data. Coloque um texto qualquer no arquivo então, ou só confira se o arquivo exite.
    Fábio de Paula Junior
    segunda-feira, 8 de novembro de 2010 19:00
    Moderador