Como capturar rapidamente o mundo ou gerenciar uma rede de computadores Windows usando o OPSI

Isenção de responsabilidade:
O autor adora muletas curtas e retas e também adora suavemente o software livre e gratuito pela flexibilidade e escalabilidade que ele oferece. O objetivo deste artigo é o desejo de promover, além de falar sobre o sistema de gerenciamento de software OPSI (Open PC Server Integration), indescritivelmente desconhecido na Internet russa.


Eu estava sentado no escritório e tomando café quando Ilon Mask me ligou e, em russo puro, me disse que já bastava aguentar, é hora de reunir as melhores mentes para combater um determinado vírus e, por isso, agora, cinco minutos depois, estou em casa. o escritório trará 100 computadores, dos quais eu preciso implantar urgentemente o Windows 10, e amanhã pela manhã cientistas de todo o mundo vão ao escritório para começar a trabalhar no antivírus. Bem, não é isso que eu tenho esperado a vida toda? Um desafio digno para uma boa ferramenta.

Para implementar o plano, usarei o sistema OPSI - Open PC Server Integration.

O OPSI é escrito em python na Alemanha e, aparentemente, muletas, gratuitamente e escalabilidade também gostam muito dele.

Recursos básicos do sistema:

  1. Implantação automática de software

    Funciona assim: você analisa o instalador e cria o pacote opsi, que instala o programa da maneira correta. Funciona melhor com pacotes msi, conhece mais alguns formatos com os quais também lida. Ele pode executar um arquivo bat ou um script do PowerShell, mas, em princípio, qualquer intérprete. Existem sistemas de registro embutidos, em geral, enchimento total, provavelmente a melhor parte do sistema.
  2. Instalação automática de sistemas operacionais

    Eu uso apenas a instalação a partir de uma imagem, como a mais rápida, mas existem opções com a instalação offline do sistema a partir do zero.


  3. , , , , windows. , , windows, , .
  4. Várias interfaces de gerenciamento convenientes com a possibilidade de integração flexível

    Existe um programa com interface gráfica, existe uma interface http para a qual você pode enviar comandos, no console do servidor, você pode controlar o OPSI, incorporar comandos em seus scripts, acessar o back-end a partir de python, mas infelizmente , enquanto eu não possuo essa mágica.
  5. Suporte para vários servidores de depósito (servidores que contêm diretamente o software no qual a implantação está em andamento).

    Você pode adicionar muitos servidores a cada sub-rede ou grupo de computadores, cada um servindo sua própria rede.

Recursos do sistema implementados por módulos (existem módulos gratuitos e pagos):

  1. Conector LDAP (pago) Um

    conector que conecta um domínio e opsi em um único todo
  2. ()

    : , ...
  3. MySQL ()

    OPSI mysql , 300
  4. Nagios ()

  5. ()

    , opsi , , .
  6. ()

    .
  7. ()

    , , , . , ansible puppet, . linux windows .
  8. WAN ()

    , .
  9. ()

  10. OTRS::ITSM ()

  11. ()

    , , , « », , .

Você pode aprender mais em detalhes aqui.O

modelo de monetização que eles possuem é o seguinte: eles vendem módulos até coletar o valor para liberá-los.

Enquanto os computadores são trazidos para o meu escritório e montados, eu instalo o servidor AD no servidor Windows, elevo o domínio domain.local nele, além de DNS e DHCP.

Você pode instalar o OPSI no grupo de trabalho e no domínio, instalaremos no domínio, mas sem vincular o AD (conector LDAP).

Iremos implantar o Windows 10 em uma rede de computadores de acordo com o seguinte esquema: prepararemos uma imagem do Windows 10 implantável com todos os programas, inicializaremos através da rede via opsi, usaremos o clonezilla para salvá-lo automaticamente em um arquivo e configuraremos todos os computadores para instalar automaticamente via opsi, inicializar através da rede e automaticamente espalharemos esse arquivo em todos os computadores no segmento de rede de transmissão via tftp.

Para fazer isso, na área do servidor DHCP, defina o parâmetro 66 no ip do nosso futuro servidor opsi 192.168.1.229

imagem

e o parâmetro 67 como linux / pxelinux.0

No DNS, adicione opsiserver.domain.local sob o endereço estático 192.168.1.229
Em seguida, criaremos uma máquina virtual para o nosso servidor opsi em ferro, que suportará suas cargas e atenderá você em termos de velocidade. Ssd e várias placas de rede são bem-vindas.

O Opsi não suporta todos os sistemas; a lista de compatibilidade pode ser encontrada aqui .

Instalamos imediatamente no local inglês, aconselhamos você a não usar o alfabeto cirílico em qualquer lugar deste servidor.

Minha distribuição favorita do debian 10 eu instalo em uma configuração mínima com o nome opsiserver.

Após a instalação e reinicialização, apenas no caso, configuramos os códigos de idioma:

dpkg-reconfigure locales

Eu seleciono tudo onde há de_ en_ e ru_ system leave en_US.UTF8.

A instalação adicional é uma recontagem deste tutorial adaptada à tarefa .

Mude o nome do servidor se for diferente do que precisamos:

hostname opsiserver.domain.local

Verificação:

hostname -f

Vamos trazer o / etc / hosts para o seguinte formulário:

127.0.0.1 localhost
127.1.1.1 localhost.localdomain
192.168.1.229 opsiserver.domain.local opsiserver

E esqueceremos sua existência para sempre, uma vez que a opsi exige o conteúdo desse arquivo e, quando é alterada, às vezes começa a se rebelar e polvilhar com erros.

Instale os pacotes necessários:

apt install wget host pigz mc -y

apt install samba samba-common smbclient cifs-utils -y 

Instalamos o servidor mysql por padrão, o maria-db se levanta para mim, ele também funciona.

apt install default-mysql-server -y

sudo mysql_secure_installation

Respondemos as perguntas afirmativamente, alterando a senha root e lembrando-a.

Inclua repositórios OPSI no sistema:

echo "deb http://download.opensuse.org/repositories/home:/uibmz:/opsi:/4.1:/stable/Debian_10/ /" > /etc/apt/sources.list.d/opsi.list

wget -nv https://download.opensuse.org/repositories/home:uibmz:opsi:4.1:stable/Debian_10/Release.key -O Release.key
apt-key add - < Release.key

Atualizada:

apt update

Removemos o tftpd, se houver, pois o OPSI entrará em conflito com ele:

apt remove tftpd

Removemos o suporte tftp do inetd, porque se houver, o OPSI entrará em conflito com ele:

update-inetd --remove tftp
apt install opsi-tftpd-hpa

E instale diretamente o servidor opsi:

apt install opsi-server

no processo, eles solicitarão os dados necessários para criar um certificado autoassinado, que por sua vez é necessário para a conexão criptografada dos clientes com o servidor.
Instale o suporte do Windows:

apt install opsi-windows-support

configure o back-end do mysql:

opsi-setup --configure-mysql

imagem

Definimos o endereço do servidor (host local), o usuário do qual estamos atuando (root), a senha root no mysql (da qual nos lembramos anteriormente), o nome do banco de dados para opsi (opsi), o nome do usuário que trabalhará nesse banco de dados (opsi), a senha desse usuário (inventamos Novo).

Em seguida, para o debian 10, você precisa adicionar / usr / sbin ao PATH:

PATH=$PATH:/usr/sbin

e a mesma linha deve ser adicionada ao .bashrc no seu diretório pessoal. Se isso não for feito, na próxima etapa você receberá o erro "chpasswd não encontrado".

Inicializamos o sistema e definimos os direitos necessários para os arquivos e diretórios do sistema:

opsi-setup --init-current-config
opsi-set-rights

Reinicialização do serviço:

systemctl restart opsiconfd.service
systemctl restart opsipxeconfd.service

Configure o samba:

opsi-setup --auto-configure-samba

Os clientes OPSI se conectam ao servidor principal via https na porta 4447 e, se você precisar chamar algum tipo de instalação, os clientes montam a bola de samba no servidor opsi e instalam o software a partir dele. Para tornar isso possível, permitimos que o OPSI reconfigure o samba.

Reinício do Samba:

systemctl restart smbd.service
systemctl restart nmbd.service

Defina a senha do administrador para o usuário do sistema pcpatch:

opsi-admin -d task setPcpatchPassword

Agora crie um usuário para administrar o sistema:

useradd -m -s /bin/bash adminuser

Crie uma senha para ele:

passwd adminuser

Agora a senha para o samba, eu crio a mesma que no sistema:

smbpasswd -a adminuser

Adicione ao grupo:

usermod -aG pcpatch adminuser

Se faremos algo com o OPSI sob a raiz, precisamos adicionar a raiz ao grupo:

usermod -aG pcpatch root

Mais algumas muletas:

opsi-setup --patch-sudoers-file

Agora você pode baixar pacotes para o sistema e, enquanto estão carregando, beba café.

opsi-package-updater -v install

Posteriormente, os pacotes podem ser atualizados com o comando:

opsi-package-updater -v update

Agora vá para
https://download.uib.de/opsi4.1/misc/helper/ , faça o download e instale a interface de gerenciamento configurada por opsi para

opsi-configed-setup.exe

entrar no servidor, digite o endereço do servidor, nosso usuário administrador e sua senha,

https://opsiserver.domain.local:4447/

e estamos no sistema.

Neste ponto, o servidor está instalado!

imagem

1 - todos os clientes conectados a este servidor, eles podem ser desmontados em grupos, inclusive os aninhados, aplicam a atribuição a todo o grupo de uma só vez.
2 - uma guia com clientes, esta é uma lista dos computadores controlados pela opsi
3 - clientes são uma lista, aqui você pode selecioná-los em qualquer ordem para aplicar o objetivo
4 - "configuração do produto" - vítima de tradução. De fato, existem pacotes que podem ser instalados no Windows, na terminologia opsi - localboot products
5 - Produtos Netboot - é tudo o que é baixado pela rede
6 - opsi-mac-address - a papoila do computador é o que é determinado durante a inicialização da rede
7 - opsiHostKey é a "senha" do cliente no sistema opsi, se você a excluir de cliente opsi do computador e, em seguida, reinstale-o, não funcionará, pois a senha permanecerá antiga e não será adequada. Isso é um bug e um recurso. E como você faria?

Agora vamos preparar a imagem do Windows 10 que iremos derramar. O Clonezilla, que usaremos, não é tão bom quanto o acronis, mas ainda sabe como espalhar a imagem de um disco menor para o mesmo ou maior.

Colocamos no sistema todos os programas de que precisamos, além das Ferramentas de Administração de Servidor Remoto para Windows 10. Eu tenho o Windows 10 1903, instalei o 1803 e tudo o que precisa ser iniciado. Você pode baixá-lo aqui:https://www.microsoft.com/en-us/download/details.aspx?id=45520
Precisamos dele para o utilitário netdom, que permite que você insira automaticamente o computador no domínio.

Para fazer isso, baixamos os arquivos aqui https://github.com/valmont2k/renamejoin no diretório c: \ renamejoin. Criamos um administrador de domínio no controlador de domínio com a capacidade de inserir apenas computadores no domínio com o login do Joinadmin com a senha password1234QWE. Se um invasor intercepta essa senha, ele pode trazer apenas computadores para o nosso domínio.

Execute a linha de createtesk.txt no console administrativo do Windows totalmente preparado, o que criará uma tarefa para iniciar na inicialização.

Todo o esquema funcionará da seguinte maneira:
Quando dividir a imagem em todos os computadores, no primeiro boot, o Windows irá iniciar uma tarefa C:\renamejoin\step1.cmdque muda o nome do computador para win-%random%, reinicie o computador, apagar C:\renamejoin\step1.cmde renomear C:\renamejoin\step2.cmda C:\renamejoin\step1.cmd. Na próxima inicialização, o Windows será iniciado C:\renamejoin\step1.cmd, o que entrará neste computador no domínio, o reinicializará e o excluirá C:\renamejoin\step1.cmd. Podemos remover a tarefa potencialmente perigosa dos computadores do domínio posteriormente. Através da OPSI, é claro!

imagem

É hora de converter o Windows preparado em uma imagem.

Através do ícone do computador com um sinal de adição, adicione nosso computador à interface de gerenciamento opsi opsi-configure, defina seu endereço de papoula. Salve . Passamos aos produtos Netboot, em frente ao clonezilla, colocamos "setup". Na configuração do cliente, expomos tudo como na captura de tela: o nome do arquivo e o comando pelo qual preenchemos o disco inteiro na imagem. No BIOS do computador com Windows, configuramos o download da rede. Reinicie o comp. Se você fez tudo corretamente, verá como o Windows flui para a imagem sem a ajuda das mãos.

imagem

Enquanto isso, os computadores são montados, mas precisam ser adicionados como clientes em opsi, juntamente com seus endereços de papoula, acrescentando-os com canetas não é de todo um assunto de boatos, certo?

A solução é:

apt install tcpdump

Execute no opsiserver:

tcpdump -n udp -vvvvv -e port 69 > /var/log/tftp

E, definindo as configurações do BIOS para todos os computadores inicializarem pela rede (e ao mesmo tempo acordarem dos dispositivos PCI-E, pela rede, você entenderá o motivo mais tarde), carregue-os. Se a janela azul do menu de inicialização opsi aparecer durante a inicialização,

imagem

você estará fazendo tudo certo.

Ao inicializar, os computadores acessam nosso servidor, o tcpdump grava seus endereços de papoula em um arquivo /var/log/tftpe usando um script de repo https://github.com/valmont2k/opsi-hosts-importerpara executar no opsiserver depois que todos os computadores são marcados em opsi e deixam seus endereços de papoula lá. Este script usa a API opsi aqui https://download.uib.de/opsi4.1/experimental/documentation/html/opsi-api-documentation/opsi_API.html e um pouco de mágica. Após iniciá-lo, você terá clientes no opsiserver do formulário win% random32% .domain.local

O próximo passo é converter a imagem do Windows (que já deveria ter sido feita) em todos os computadores.

imagem

Para fazer isso, selecione todos os computadores nos quais você precisa instalar o Windows e, ao lado do clonezilla, definimos os valores como na captura de tela. Você desliga os computadores, depois liga vários deles e observa como o Windows rola automaticamente para eles, eles próprios são renomeados e inseridos no domínio.

Se você quiser automatizar isso também, coloque etherwake e escreva um script que, com um atraso especificado, retire os endereços mac do arquivo / tmp / newmacs e ative seus hosts para que eles revezem o Windows. Veja a atualização 1 .

Fiz um gesto de Ronaldo com um anúncio de xampu e já estava fazendo as malas para tomar café quando Ilon Mask ligou novamente no meu telefone e acrescentou:

- Sim, esqueci de dizer, é necessário que a %program%versão mais recente esteja em todos os computadores amanhã , você consegue lidar com isso?
- Claro, tudo será amanhã!
Não posso perturbar o ídolo dos tecnocratas, então você precisa colocar seu cérebro de volta em suas mãos.

Seria bom se, na inicialização, os computadores configurassem um cliente opsi chamado opsi-client-agent. Isso pode ser feito por meio de políticas de grupo de domínio.

Para que isso ocorra sem inserir uma senha durante a instalação, é necessário adicionar a senha do seu usuário no arquivo
/var/lib/opsi/depot/opsi-client-agent/files/opsi/cfg/config.inino opsiserver
como o valor de service_hidden_passwordadminuserbase64

[installation]
service_user=adminuser
service_password=none
service_hidden_password=base64HERE

Em seguida, adicione a política de grupo no domínio setupOPSI e use o script a partir daqui.Lembre- https://github.com/valmont2k/opsi-install-opsi-client-agent-over-active-directory-domain-policy
se de inserir seus valores no script.

imagem

Se você fez tudo corretamente, na primeira reinicialização no domínio, os clientes instalarão opsi-client-agent, reiniciarão e aparecerão sob seus nomes win-%random%na interface de gerenciamento OPSI. Clientes antigos com os mesmos endereços de papoula podem ser excluídos.

Agora você pode prosseguir para a instalação %program%.

Nós vamos aqui https://forum.opsi.org/viewtopic.php?f=22&t=7573 e encontramos um link para o pacote *.opsicom o nome packagebuilder, algo como "opsi PackageBuilder Windows (opsi Paket)".

Faça o download do pacote para o diretório /var/lib/opsi/workbenchno opsiserver

cd /var/lib/opsi/workbench

wget https://opsipackagebuilder.s3.amazonaws.com/opsiPackageBuilder/python/opsipackagebuilder_8.4.4-1.opsi 

e instale-o:

opsi-package-manager -d ALL -i opsipackagebuilder_8.4.4-1.opsi

Agora, na interface de gerenciamento opsi, clique no botão de atualização e veja se temos novos pacotes opsipackagebuildere opsi-setup-detector.

Nós os colocamos através da interface de controle em uma máquina de teste no Windows.

Quando o programa opsipackagebuildere opsi-setup-detectorestabelecida, run opsi-setup-detectorand play off-lo no programa de instalação windirstat, descarregado a partir do pré-programa oficial website.

Antes de instalar, você precisa definir as configurações do programa. Montamos a bola na máquina de teste \\ opsiserver.domain.local \ opsi_workbench como unidade z: escrevemos nosso nome e email nos campos especificados: a

imagem

OPSI pode criar um pacote usando 32 e 64 instaladores ao mesmo tempo e defini-los com base na capacidade do sistema, temos 64 bits em todos os lugares, então clique em "Analisar arquivo único ...":

imagem

Vimos que o detector não entendeu o diretório de instalação, podemos descobrir por nós mesmos tentando instalar o programa através do instalador. Mas ele detectou o tipo de instalador, a versão do programa, o tamanho do aplicativo na forma montada e implantada, a chave de instalação offline, a chave de remoção offline e o nome do desinstalador.

imagem

Entramos no diretório de instalação e clicamos em Próximo passo:
imagem

Aqui você pode adicionar o nome do produto, seu ID, descrição e definir a versão do pacote, ou seja, colocar na tentativa que fazemos para montar o pacote (no nosso caso, a primeira tentativa):

imagem

Você pode adicionar dependências, significa que, para instalar o pacote atual, os próprios pacotes colocados para instalação são aqueles indicados nos requisitos para o nosso:

imagem

Criar pacote OPSI:

imagem

Criamos o pacote, agora precisamos ir para o opsiserver em/var/lib/opsi/workbench/windirstat.

Colete o pacote:

opsi-makepackage

Instale-o:

opsi-package-manager -d ALL -i windirstat-1.1.2-1.opsi

Se tudo correu bem, na interface de gerenciamento configurado pelo opsi, clique no botão "atualizar" e verifique se temos um novo pacote windirstatque pode ser instalado em computadores selecionados em nossa rede.

Bingo! O primeiro pacote está montado!

Para complicar nossa tarefa, usando o powershell, criaremos uma regra no firewall do Windows que dará acesso ao cliente nas portas 4441 e 4447 e carregaremos automaticamente esse aplicativo para o usuário através do ajuste do registro, como se fosse, por exemplo, um mensageiro.

Abra o construtor de pacotes opsi:

imagem

Escolha abrir o pacote e abra nosso pacote com windirstat:

imagem

O OPSI, por padrão, age da seguinte maneira: quando você remove um programa de uninstall.opsiscript, delsub.opsiscript é chamado, o que remove o programa. Ao instalar um programa a partir de setup.opsiscript, delsub.opsiscript é chamado, o que remove o programa e, em seguida, o setup.opsiscript o instala. Portanto, fazemos edições para criar algo em setup.opsiscript e edições para excluir algo em delsub.opsiscript.

Toda a magia desses scripts está refletida na documentação https://download.uib.de/opsi4.1/documentation/html/en/opsi-winst-manual/opsi-winst-manual.html

setup.opsiscript pode ser aberta através do ícone de lápis e delsub.opsiscript via Árvore de scripts.

imagem

Aqui está o menu completo do arquivo.

imagem

Cada tentativa de compilar um pacote deve ser aumentada em um.

imagem

Nós adicionamos o programa para carregar automaticamente via opsi, para isso, insira as linhas em setup.opsiscript:

Registry_changes  /AllNTUserdats /64bit
[Registry_changes]
OpenKey [Software\Microsoft\Windows\CurrentVersion\Run]
Set "WinDirStat" = "C:\Program Files (x86)\WinDirStat\windirstat.exe"

E no delsub.opsiscript, insira as linhas:

Registry_changes  /AllNTUserdats /64bit
[Registry_changes]
OpenKey [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
;Set "WinDirStat" = "C:\Program Files (x86)\WinDirStat\windirstat.exe"
DeleteVar "WinDirStat"

Adicionamos a regra ao firewall executando o script powershell, para isso, insira as linhas em setup.opsiscript:

DosInAnIcon_PowerShell_ExecutionPolicy
ExecWith_PowerShell_NichtPDCAktionen powershell.exe winst /sysnative
[DosInAnIcon_PowerShell_ExecutionPolicy]
echo "powershell set-executionpolicy RemoteSigned ..."
powershell.exe set-executionpolicy RemoteSigned
exit %ERRORLEVEL%

[ExecWith_PowerShell_NichtPDCAktionen]
; hier Dein PS-Code

New-NetFirewallRule -DisplayName 'OPSI-Inbound' -Profile @('Domain', 'Private', 'Public') -Direction Inbound -Action Allow -Protocol TCP -LocalPort @('4441', '4447')

E no delsub.opsiscript, insira as linhas:

DosInAnIcon_PowerShell_ExecutionPolicy
ExecWith_PowerShell_NichtPDCAktionen powershell.exe winst /sysnative
[DosInAnIcon_PowerShell_ExecutionPolicy]
echo "powershell set-executionpolicy RemoteSigned ..."
powershell.exe set-executionpolicy RemoteSigned
exit %ERRORLEVEL%

[ExecWith_PowerShell_NichtPDCAktionen]
; hier Dein PS-Code
Remove-NetFirewallRule -DisplayName 'OPSI-Inbound'

O código completo pode ser visto aqui:

https://github.com/valmont2k/WinDirStatOpsiPackageTest

Eu já relaxei, vendo o opsi rolar a %program%versão mais recente para toda a rede, enquanto Ilon novamente interrompeu meus pensamentos.
- Na próxima semana, outras 500 pessoas chegarão, escritórios já foram alugados, computadores estão sendo importados, existe um networker, você precisa implantar uma rede windows em seis filiais da cidade, você consegue lidar com isso?
- Bem, é claro, isso não é ciência do foguete - brinquei cansado em resposta.

Clonamos nosso servidor opsiserver usando o hipervisor e o implantamos na ramificação.
Assumimos que o escritório central esteja conectado às filiais por meio de uma VPN com uma velocidade de pelo menos 10 Mbps.

Agora vamos criar um servidor de depósito, ou seja, um servidor para armazenar pacotes na filial. Os clientes na filial batem em https no servidor principal e, se você precisar instalar o software, eles montam o servidor de depósito em sua filial e são instalados a partir dele, isso é feito especialmente para salvar o canal da Internet entre o escritório e a filial.

Configuramos no servidor de filial opsiserver-2 um endereço estático da rede local, alterando o arquivo de /etc/network/interfacesacordo com a nova rede.

Altere o nome do host e os hosts:

sed -i 's/opsiserver/opsiserver-2/' /etc/hostname
sed -i 's/opsiserver/opsiserver-2/g' /etc/hosts

em / etc / hosts, atualizamos os dados dirigindo para um novo endereço IP

reboot

Renomeie o servidor opsi usando opsi:

opsi-admin --no-depot -d method host_renameOpsiDepotserver opsiserver.domain.local opsiserver-2.domain.local

No servidor opsiserver-2.domain.local, nós o conectamos ao opsiserver.domain.local como depósito:

opsi-setup --register-depot

Especifique o nome do servidor principal ao qual conectamos o novo depósito, administrador e senha: Você

imagem

não precisa alterar nada aqui : Você

imagem

pode verificar se tudo foi feito corretamente em opsi-configed:

imagem

Em seguida, é necessário configurar o sistema para que os clientes escolham o servidor do depósito. Selecionamos todos os clientes e os definimos como depósito dinâmico. Por padrão, o cliente examina seu endereço IP e seleciona o depósito de sua rede.

imagem

Agora configuramos que todos os futuros clientes escolhem imediatamente o depósito dinamicamente:

imagem

é isso, a configuração do novo servidor de depósito está concluída, você pode instalar o opsi-client-agent para computadores na rede local com o mesmo script que instalamos anteriormente no escritório principal, não esquecendo de mudar o endereço IP dentro do script.

Em cada filial, configuramos um controlador de domínio (você pode apenas ler), fazemos nosso próprio endereçamento de rede, dividimos o site padrão dentro do domínio do Windows em sub-sites, cada um dos quais fazemos nossa sub-rede, nossa política de grupo com seu script de instalação do agente opsi-client-agent.

Então repetimos no novo ramo.

Eu terminei meu café e fui para casa, e o LED na placa de rede sinalizava que novos e novos sistemas estavam sendo lançados ao barulho dos refrigeradores ...

Atualização 1:
Como se viu, não há necessidade de script, o opsi-configed permite que o mouse clique no despertar dos clientes através do sheduler.

All Articles