AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-760148

Manu's questions

Martin Hope
Manu
Asked: 2022-08-17 03:18:03 +0800 CST

Usando variáveis ​​da tarefa na seguinte tarefa de loop

  • 0

Desejo implantar alguns procedimentos armazenados em várias instâncias do MSSQL em vários servidores. No meu playbook eu tenho uma tarefa que reúne todas as instâncias em um servidor que eu uso nas seguintes tarefas para fazer um loop em qualquer instância. Eu uso esse método em muitos dos meus playbooks, mas neste também preciso ser capaz de usar uma variável reunida anteriormente em uma whencondição enquanto faço o loop da tarefa.

Estas são as partes relevantes do meu manual:

#################### GATHER INSTANCES ####################
    - name: list instances
      win_shell: (Find-DbaInstance -ComputerName localhost | Where Availability -eq 'Available').instancename
      changed_when: False
      register: sql_instances

#################### GATHER PROCEDURES ####################
    - name: list procedures
      win_shell: (Get-DbaDbStoredProcedure -SqlInstance localhost\{{ item }} -Database master -Schema dbo).Name
      changed_when: False
      register: sql_procedures
      loop: "{{ sql_instances.stdout_lines }}"  
      
#################### INSTALL CUSTOM PROCEDURES ####################
    - name: my_procedure
      ansible.windows.win_powershell: 
        script: |
          $batch_install_prodecure = @'
            --My Stored Procedure
          '@
          Invoke-DbaQuery -SqlInstance localhost\{{ item }} -Query $batch_install_prodecure
      when: sql_procedures.stdout_lines.find('my_procedure') != 0
      register: my_procedure
      loop: "{{ sql_instances.stdout_lines }}" 

Esta é a saída:

#################### GATHER INSTANCES ####################
  "stdout_lines": [
    "MSSQLSERVER2",
    "MSSQLSERVER"
  ]
  
 #################### GATHER PROCEDURES ####################
   "stdout_lines": [
    "sp_Something",
    "sp_Somethingelse"
  ],
  "stderr_lines": [],
  "_ansible_no_log": false,
  "item": "MSSQLSERVER2",
  "ansible_loop_var": "item",
  "_ansible_item_label": "MSSQLSERVER2"
}
############################
  "stdout_lines": [
    "sp_Something",
    "sp_Somethingelse"
  ],
  "stderr_lines": [],
  "_ansible_no_log": false,
  "item": "MSSQLSERVER",
  "ansible_loop_var": "item",
  "_ansible_item_label": "MSSQLSERVER"
}

#################### INSTALL CUSTOM PROCEDURES ####################
The conditional check 'sql_procedures.stdout_lines.find('custProc_Backupcheck') != 0' failed. The error was: error while evaluating conditional (sql_procedures.stdout_lines.find('custProc_Backupcheck') != 0): 'dict object' has no attribute 'stdout_lines'

Eu meio que entendo porque não funciona. Eu tenho que descrever de alguma forma com qual item a variável é encontrada, pois ela é gerada em um loop. Eu só não sei como fazer isso.

O mais longe que cheguei até agora é tentar implementar algo parecido como foi feito neste post , mas acho que esse método não se aplica ao meu caso

Eu sei que poderia facilmente fazer tudo isso diretamente no PowerShell, mas no final meu objetivo é instalar vários procedimentos (um por tarefa) e também poder remover facilmente os mais antigos para manter um inventário idêntico de procedimentos em minhas instâncias MSSQL.

Alguém pode me dizer como devo definir a whencondição para atingir meu objetivo?

Editar:

Veja a resposta aceita para saber por que não funciona.

Agora mudei para verificar, se o procedimento já está instalado ou não, no PowerShell:

#################### INSTALL CUSTOM PROCEDURES ####################
    - name: my_procedure
      ansible.windows.win_powershell: 
        script: |
          $name_procedure = 'my_procedure'
          $install_prodecure = @'
            --My Stored Procedure
          '@
          if ((Get-DbaDbStoredProcedure -SqlInstance localhost\{{ item }}  -Database master -Schema dbo).Name -contains $name_procedure) {
              write-host "OK: SP $name_procedure is already installed"
          } else {
              write-host "SET: SP $name_procedure needs to be installed"
              Invoke-DbaQuery -SqlInstance localhost\{{ item }} -Query $install_prodecure
              if ((Get-DbaDbStoredProcedure -SqlInstance localhost\{{ item }}  -Database master -Schema dbo).Name -contains $name_procedure) {
              write-host "OK: SP $name_procedure sucessfully installed"
              } else {
                  write-host "ERROR: Was not able to install $name_procedure"
              }
          }
      register: my_procedure
      loop: "{{ sql_instances.stdout_lines }}" 
      failed_when: my_procedure.host_out.find('ERROR:') != -1
      changed_when: my_procedure.host_out.find('SET:') != -1
sql-server
  • 0 respostas
  • 47 Views
Martin Hope
Manu
Asked: 2021-06-29 05:27:13 +0800 CST

Apache Guacamole Login com usuário do domínio A, rdp para servidor do domínio B

  • 1

Visão geral

Entramos no Gucamole com um usuário do DomínioA onde selecionamos uma conexão rdp para um servidor do DomínioB.

Fundos

DomínioA para DomínioB e vice-versa:

  • Tipo: Externo
  • Suporte à criptografia Kerberos AES: não
  • Direção: bidirecional
  • Transitividade: não
  • Autenticação: em todo o domínio

Permissões

O usuário do DomínioA ingressou no grupo de Usuários da Área de Trabalho Remota local no Servidor do DomínioB. Também tentei temporariamente com o grupo Administradores local.

guacamole

Toda a configuração não foi feita por mim e não tenho muita visão, pois é gerenciada por outra equipe. O que eu sei é que funciona bem com um usuário do DomainA para um servidor do DomainA. Os usuários fazem login com o upn e usam 2FA por OpenOTP. Se vocês acharem que ajudaria compartilhar algumas configurações do Guacamole me digam o que vocês querem ver e eu verifico com a equipe.

Conexões em Guacamole

  • protocolo: rdp
  • hostname: ip do servidor do DomainB
  • porta: 3389
  • nome de usuário: ${GUAC_USERNAME}
  • senha: ${GUAC_PASSWORD}
  • domínio: em branco
  • modo de segurança: NLA
  • desabilitar autenticação: não
  • ignorar o certificado do servidor: sim
  • todo o resto está definido como padrão / não configurado

Claro que tentamos várias configurações diferentes.

Sintomas

Agora aqui está o que acontece.

  • Eu entro no Guacamole com o usuário do DomainA
  • receba o push OpenOTP e confirme
  • estou logado no Guacamole e selecione a conexão com o servidor do DomainB
  • receber mensagem de erro:

O servidor de área de trabalho remota está inacessível no momento. Se o problema persistir, notifique o administrador do sistema ou verifique os logs do sistema.

  • depois de algumas tentativas, às vezes recebo esta mensagem:

Esta conexão foi fechada porque o servidor está demorando muito para responder. Isso geralmente é causado por problemas de rede, como um sinal sem fio irregular ou velocidades de rede lentas. Verifique sua conexão de rede e tente novamente ou entre em contato com o administrador do sistema.

  • e agora vem a parte engraçada que me deixa louco: eu consigo logar no servidor do DomainB com o usuário do DomainA via rdp direto e se eu fizer isso, manter a conexão aberta e iniciar a conexão no Guacamole, eu consigo assuma a sessão!!

Histórico

Guacamole Logs não mostra absolutamente nada de útil.

O log de segurança do Windows mostra este evento no erro de login:

EventID 4625, Logon
An account failed to log on.

Subject:
    Security ID:        NULL SID
    Account Name:       -
    Account Domain:     -
    Logon ID:       0x0

Logon Type:         3

Account For Which Logon Failed:
    Security ID:        NULL SID
    Account Name:       User (correct)
    Account Domain:     DomainA (correct)

Failure Information:
    Failure Reason:     An Error occured during Logon.
    Status:         0xC000005E
    Sub Status:     0x0

Process Information:
    Caller Process ID:  0x0
    Caller Process Name:    -

Network Information:
    Workstation Name:   f7054e3b9dd7
    Source Network Address: Guacamole-Server-IP
    Source Port:        0

Detailed Authentication Information:
    Logon Process:      NtLmSsp 
    Authentication Package: NTLM
    Transited Services: -
    Package Name (NTLM only):   -
    Key Length:     0

This event is generated when a logon request fails. It is generated on the computer where access was attempted.

The Subject fields indicate the account on the local system which requested the logon. This is most commonly a service such as the Server service, or a local process such as Winlogon.exe or Services.exe.

The Logon Type field indicates the kind of logon that was requested. The most common types are 2 (interactive) and 3 (network).

The Process Information fields indicate which account and process on the system requested the logon.

The Network Information fields indicate where a remote logon request originated. Workstation name is not always available and may be left blank in some cases.

The authentication information fields provide detailed information about this specific logon request.
    - Transited services indicate which intermediate services have participated in this logon request.
    - Package name indicates which sub-protocol was used among the NTLM protocols.
    - Key length indicates the length of the generated session key. This will be 0 if no session key was requested.

Solução de problemas

Agora, neste ponto, não sei onde definir meu próximo foco. Tentamos várias configurações na conexão rdp do Guacamole. Pesquisei bastante online, mas não consegui encontrar exemplos com informações em que alguém tentasse a mesma coisa que nós. Como o rdp regular funciona bem, achamos que nossas relações de confiança e permissões devem estar bem.

Vocês podem me dar alguma dica em que direção devo investigar?

Alguém usa Guacamole em uma configuração semelhante?

Editar informações adicionais do Visualizador de eventos sugeridas pelo usuário Swisstone:

RemoteDesktopServices-RdpCoreTS
08:38:23 Info: The server accepted a new TCP connection from client *Guacamole-IP*:53494.
08:38:23 Info: Connection RDP-Tcp#78 created 
08:38:23 Info: Interface method called: PrepareForAccept
08:38:23 Info: Interface method called: SendPolicyData
08:38:23 Info: PerfCounter session started with instance ID 78
08:38:23 Warning: TCP socket was gracefully terminated
08:38:23 Info: Interface method called: OnDisconnected
08:38:23 Info: The server has terminated main RDP connection with the client.
08:38:23 Info: During this connection, server has not sent data or graphics update for 0 seconds (Idle1: 0, Idle2: 0).
08:38:23 Info: Channel rdpinpt has been closed between the server and the client on transport tunnel: 0.
08:38:23 Info: Channel rdpcmd has been closed between the server and the client on transport tunnel: 0.
08:38:23 Info: Channel rdplic has been closed between the server and the client on transport tunnel: 0.
08:38:23 Info: The disconnect reason is 14

TerminalServices-LocalSessionManager
nothing during this time

TerminalServices-RemoteConnectionManager
nothing during this time

Esqueci de mencionar, o servidor é 2019 versão 1809

Editar2

Ok, consegui funcionar agora alterando o modo de segurança na conexão com tls. Lembro-me de ter tentado tls antes quando não estava funcionando. Talvez algumas das mudanças que fiz durante todo o processo de solução de problemas tenham feito a diferença. Até agora eu não posso dizer o que era.

Cheguei a essa "solução" tentando aleatoriamente diferentes opções para conectar usando o freerdp depois que descobri que ele é usado pelo guacamole para conexões rdp.

Alguém vê alguma preocupação em usar tls em vez de nla neste caso?

windows active-directory remote-access apache-2.4 trust-relationship
  • 1 respostas
  • 2167 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve