Scripts – Active Directory

Listar usuários do Active Directory

dsquery user -limit 1000 | dsget user -dn > C:\usuarios.txt

Lista de usuários do Active Directory, adicionando uma coluna informando se a conta esta habilitada ou não.

dsquery user -limit 0 | dsget user -dn -disabled > C:\usuarios2.txt

Fonte: http://www.msxfaq.de/tools/dsxxx.htm

Mostrar todos os usuários no Active Directory com “a senha nunca expira”:

get-aduser -filter * -properties Name, PasswordNeverExpires | where { $_.passwordNeverExpires -eq "true" } | where {$_.enabled -eq "true"} | Format-Table -Property Name, PasswordNeverExpires -AutoSize

Mostrar o último horário de login, em formato de classificação para objetos de computador:

Get-ADComputer -Filter * -Properties *  | Sort LastLogonDate | FT Name, LastLogonDate -Autosize

Mostrar a hora do último login, no formato classificado para userobjects:

Get-ADUser -Filter * -Properties *  | Sort LastLogonDate | FT Name, LastLogonDate -Autosize

Instalando GP-Web com nginx + Php-fpm no Centos6 64bits

O sistema GP-Web, é a uma das principais ferramentas no mercado nacional no gerenciamento de projetos, gestão estratégica, tramitação interna de mensagens e documentos eletrônicos protocolados e se propõe a ser uma solução completa e integrada para qualquer organização pública ou privada. Funciona via Web, tendo sido criado na linguagem PHP com banco de dados MySQL. E detalhe, é totalmente gratuito.

O mesmo está instalado em parcela significativa do Governo, tanto no Executivo quanto no Judiciário e com perspectiva de até o final de 2013 ser a solução corporativa standard de gerenciamento de projetos integrado com gestão estratégica de todos os Ministérios do Poder Executivo Federal e do Judiciário Brasileiro.

Conheça mais sobre o projeto:
– http://www.sistemagpweb.com/
Folder publicitário do Sistema

Neste tutorial, vamos aprender a como instalar o sistema utilizando o NGinx, uma alternativa ao Apache, que consome poucos recursos e é extremamente rápido.

==================================
Linux CentOS 6x – 64bits
==================================

Instalar os Repositórios do Remi e Epel

1) EPEL
[shell]
# yum install yum-priorities
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm
[/shell]

2)REMI
[shell]
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
[/shell]

Instalar o webserver nginx

[shell]
# yum install nginx
# chkconfig –level 345 nginx on # deixar o nginx iniciar por padrão
# /etc/init.d/nginx restart
[/shell]

Outros módulos do Php necessários para o Gp-Web
[shell]# yum –enablerepo=remi install php php-mysql php-ldap php-gd[/shell]

Instalar o Mysql-server
[shell]
# yum remove mysql* # removendo arquivos versão presente caso haja
# yum –enablerepo=remi install mysql-server
# mysqladmin -u root password ‘senha’ # setando a senha
[/shell]

Baixar e Descompactar o pacote do GP-Web

Baixe o pacote aqui http://www.softwarepublico.gov.br/dotlrn/clubs/gpweb/file-storage/view/gpweb_v8_0_16.zip
[shell]
# cd /var/www/html
# cp ~/Downloads/gpweb_v8_0_10.zip . # copie o gpweb para lá */html
# unzip gpweb_v8_0_10.zip # descompactar
# chmod -R 777 gpweb # Setando Permissões no diretório gpweb
# chown -R nginx.nginx gpweb/
[/shell]

Configurar o Virtual Host do GP-Web
[shell]
# cd /etc/nginx/conf.d
# vim gp-web.conf

server {
server_name gp-web;
root /var/www/html/gpweb;
access_log /var/log/nginx/gp-web-access.log;
error_log /var/log/nginx/gp-web-error.log;
location / {
root /var/www/html/gpweb;
index index.php index.html index.htm;
}

location ~ \.php$ {
root html;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/gpweb$fastcgi_script_name;
}
}
[/shell]

Instalação do GP-Web via web

Agora, com todos os serviços rodando (php-fpm; nginx e mysql-server) basta acessar o GP-Web via web, digitando no navegador:

http://127.0.0.1
ou http://localhost
ou até mesmo http://gp-web – que é nosso virtual host.

1 – Tela
Mensagem: Ainda não foi criado o arquivo de configuração. Clique aqui para iniciar a instalação e criar um
(redirecionamento em 5 seg.)

2 – Tela
Confira se todos os pré-requisitos estão ativados e instalados –

“A única Observação que pode ocorrer é uma mensagem no final da página inicial do gpweb dizendo que você está utilizando: um servidor web diferente do apache, onde o mesmo é o unico 100% compatível com o GP-Web.

Porém, pode prosseguir com a instalação que não terá problemas.

Se tudo estiver ok, clique em iniciar instalação

3 – Tela
Instalador do GP-Web
Configurações do Banco de Dados

1-Insira a senha do SGBD ‘senha’
2-Desmarque a opção > ‘Carregar dados de exemplo?’
3-Clique em > ‘Instalar Completo’

4 – Tela
Login e Senha
admin 123456

Ao finalizar, caso apareça esse erro “504 Gateway Time-out“, basta apenas atualizar a pagina para http://gp-web

==================================
Soluções de possíveis problemas
==================================
1. ‘Erros com a criação da base de dados ou tabelas corrompidas;
Solução:
mysql_upgrade h localhost -u root -p senha

2. ‘Erros na Tela 2 – Suporte GD (para o gráfico GANTT)’
Solução:
yum –enablerepo=remi install php-gd

3. ‘Erros na Tela 2 – Caminho para salvar a Sessão permite escrita? OK (/var/lib/php/session)’
Solução:
yum –enablerepo=remi install php

4. ‘Erros na Tela 2 – MySQL e LDAP’
Solução:
yum –enablerepo=remi install php-mysql php-ldap

5. “Erros ao abrir http://localhost – Forbidden 403 – sem permissão
Solução:
Edite o arquivo /etc/httpd/conf.d/httpd.conf
Localize o:
DirectoryIndex – inclua index.php, remova o index.html

6. “Erros de codificação” ao acessar http://localhost as letras ficam todas irregulares.
Solução:
Edite o arquivo /etc/httpd/conf/httpd.conf
Localize o:
AddDefaultCharset – e modifique para ISO-8859-1

7. “Erros na tela de instalação completa” Erros com a criação do banco.
Solução:
Troque o 127.0.0.1 por localhost
======================================================================
Contribuição de
Rafael Cristaldo
PTI – Prognus Software Livre
http://br.linkedin.com/pub/rafael-cristaldo/21/918/938

Script de Backup (dump) Postgresql – Com bancos a escolher

Depois que publiquei o artigo Script de Backup (dump) Postgresql – Múltiplos bancos em arquivos separados, onde por meio de um script shell, é gerados dumps de todos os bancos existentes no servidor, cada banco um arquivo separado e compactado, me perguntaram se era possível, com a mesma idéia fazer um script que ao invés de realizar o dump de todas as bases, fosse possível definir quais bancos seriam backupiados.

Pois bem, é bem simples de fazer isso, vejamos:

[shell]
#!/bin/bash
#
# Um simples script de backup
# Autor: Jonas Ferreira

# db_array – lista dos bancos que se deseja fazer o dump
db_array=”banco1 banco2 banco3 banco4″

# logfile – arquivo que grava o log de cada execucao do script
logfile=”/tmp/pgsql-backup.log”

#Diretorio de destino do arquivos
DIR=/tmp/backup

for db in $db_array
do
/usr/bin/pg_dump $db > “$DIR/$db.sql” 1>> $logfile 2>> $logfile
tar zcvf “$DIR/$db.tgz” “$DIR/$db.sql”
rm -rf “$DIR/$db.sql”
done
[/shell]

Simples assim!

Resolvendo problemas da placa eth0 ao clonar máquinas virtuais CentOS no VMware ESX

Após a clonagem de uma máquina virtual pelo VMWare a placa de rede do eth0 do Linux CentOS é renomeada como eth1, e não pega IP. isto é devido ao duplicamento de endereço MAC. Para corrigir este problema deve se efetuar a seguinte os seguintes comandos:

[shell]
# cd /etc/udev/rules.d
# cp 70-persistent-net.rules /root/
# rm 70-persistent-net.rules
# reboot
[/shell]

Este arquivo é gerado automaticamente pelo /lib/udev/write_net_rules program, e pode ser removido sem problemas. Para verificar se o problema foi corrigido, execute:

[shell]# /sbin/ifconfig | grep “^eth”[/shell]

Terá como resposta, algo assim:

[shell]eth1 Link encap:Ethernet HWaddr 00:0C:29:F3:E4:1E[/shell]

Você precisa trocar o endereço MAC da placa atual em /etc/sysconfig/networking-scripts/ifcfg-eth0, colocando o MAC exibido na acima, na linha HWADDR:

[shell]
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
[/shell]

Salve tudo e reinicie os serviços de rede

[shell]
# service network restart
# reboot
[/shell]

Para verificar se realmente funcionou, execute os seguintes comandos:

[shell]
# /sbin/ifconfig -a
# route -n
[/shell]

Verá que agora a referência é a eth0.

Referências:

Script de Backup (dump) Mysql – Múltiplos bancos em arquivos separados

Com certeza você já deve conhecer diversas maneiras de realizar backup de sua base Mysql. Mas o objetivo deste howto é apenas uma variação de um script clássico de backup.

Vamos ao problema:

A maioria das pessoas utilizam este comando para backup:

mysqldump -u root -pPASSWORD –all-databases | gzip > /mnt/database`data ‘ %m-%d-%Y’`.sql.gz

Isso vai gerar um backup de todos os bancos de dados de seu SGBD e compactar com o nome de data 03/22/2012.sql.gz. O problema esta ai, pois ele irá gerar todas as querys em um único arquivo, ou seja, se você quiser restaurar um único banco de dados, terá que procurar o trecho no dump que corresponde ao banco desejado.

A solução apresentada abaixo é uma alternativa, onde a partir de um laço, lê todos os elementos do SGBD, e gera um dump já compactado de cada banco, separadamente.

[shell]
#!/bin/bash
# backup mysql com –all-databases, mas separados cada banco em um único arquivo

DIR=”/var/arquivos_backup/mysql”
USER=”root”
PASSWORD=”senha”
OUTPUTDIR=”/var/lib/databases”
MYSQLDUMP=”/usr/bin/mysqldump”
MYSQL=”/usr/bin/mysql”

# elimando arquivos de backup antigos
rm -rf $DIR/*

# lendo a lista de banco de dados
databases=`$MYSQL –user=$USER –password=$PASSWORD \
-e “SHOW DATABASES;” | tr -d “| ” | grep -Ev ‘(Database|information_schema)’`

# realizando o dump e compactando cada arquivo gerado
for db in $databases; do
echo $db
$MYSQLDUMP –force –opt –user=$USER –password=$PASSWORD \
–databases $db | gzip > “$OUTPUTDIR/$db.gz”
done
[/shell]

Com essa idéia, pode-se editar um pouco mais este script, como por exemplo compactar a pasta com todos os arquivos gerados, e já transferir para seu storage com Active Directory, por exemplo.

Aqui disponibilizo para download um script exatamente com essa idéia em prática.

Script de Backup – Mysql – Com depósito no Storage – AD

Depois é só colocar no CronTab.

Referência: snowfrog.net

Remover árvore de diretórios em uma compactação TAR

Se você trabalha com servidores Linux, provavelmente trabalha com processos de backups personalizados para todos os seus dados importantes. Sem dúvida as cópias de segurança acabam sendo armazenadas na forma de um arquivo.tar. Tudo funciona muito bem, as cópias são feitas, comprimidas e enviadas para um storage externo. Há apenas uma questão, sempre que você abrir um desses backups, ele irá incluir toda a árvore de diretórios acima da pasta onde os arquivos foram gerados.

Esse “problema” sempre me deixou chateado quando da criação de dumps de banco de dados. Por exemplo,vamos considerar que meu script de backup gere os arquivos de dumps e salve no diretório: /var/lib/mysql/meu_banco. Eu gostaria de fazer um backup TAR do diretório meu_banco, e chama-lo de meu_banco.tar.gz.

Acontece que quando vou descompactar o arquivo meu_banco.tar.gz, eu vou ter um monte de subpastas inúteis, eu vou ter que fazer drill-down, através da raíz onde eu descompactar, até /var/lib/mysql/meu_banco. Tudo que eu realmente quero é o diretório meu_banco, os demais (/var/lib/mysql) não me interessa.

Veja como é simples se livras desses diretórios. Antes de executar o comando TAR, primeiro você deve usar o comando CD para se mover até o diretório pai que contém o diretório que você deseja, não dentro da pasta que você irá compactar, no exemplo acima, você deve estar dentro de /var/lib/mysql e não dentro de /var/lib/mysql/meu_banco.

Eis a seqüência de comando para exemplo anterior:

[shell]cd /var/lib/mysql
tar -czf /pasta/onde/voce/ira/armazenar/meu_banco.tar.gz meu_banco[/shell]

Com isso, ao descompactar o meu_banco.tar.gz terá apenas um único subdiretório, chamado meu_banco.

Agora, provavelmente você vai executar esses comandos em um script maior de backup, neste caso o comando CD direto não irá funcionar, ainda mais se o script estiver no /etc/init.d/script_bkp.

Felizmente, há uma solução fácil: você pode acrescentar vários comandos shell em conjunto, utilizando && . Com && , cada comando será executado e concluído antes do próximo começar, simulando a digitação de comandos em uma linha.

[shell]cd /var/lib/mysql && tar -czf /pasta/onde/voce/ira/armazenar/meu_banco.tar.gz meu_banco[/shell]

Pronto. 🙂

Unix ToolBox – Tutoriais estilo “receita de bolo” para o cotidiano do profissional de TI que trabalha com Linux

Unix Toolbox é uma coletânea de comandos e tarefas úteis no dia-a-dia do profissional de TI que trabalha com Linux. Um guia prático, com explicações detalhadas, porém é claro que você tem que saber o que esta fazendo.

Os tutoriais estão divididos nas seguintes categorias:

  • Sistema – Processos – Sistema de Arquivos – Rede – SSH SCP – VPN com SSH – RSYNC – SUDO – Criptografar arquivos – Criptografar partições – Certificados SSL – CVS – SVN – Comandos úteis – Instalar software – Converter de mídia – Impressão – Bancos de dados – Quota em disco – Conchas – Scripting – Programação – Ajuda on-line

O mais legal é que você pode ter acesso ao conteúdo de diversas formas, veja:

Aqui você tem a muitos outros howtos:
http://www.tekleisure.com/2012/01/25-most-useful-linux-unix-solaris.html

Howto: Como mudar o range de anos dos campos de data do Lime Survey

O Gerenciador de Questionários Lime Survey utiliza para os campos de data o módulo DatePicker do Jquery, porém por default o template amarra os anos do DatePicker entre 1980 e 2020, caso você necessite alterar este range, tem que fazer uma modificação diretamente em um arquivo, vejamos:

1. Edite o arquivo: qanda.php que fica na raíz de sua instalação do Lime Survey.

# vim qanda.php

2. Procure a linha que seta o ano mínimo e máximo, e altere para o período desejado.

$minyear=’1980′;

$maxyear=’2020′;

Pronto, pode salvar e sair do arquivo.

Com isso no campo de data, será carregado o período que você configurou, simples assim.

 

Howto: Gerando Dump do Postgresql e transferindo o arquivo para uma máquina com Windows Server

 

Howto: Gerando Dump do Postgresql e transferindo o arquivo para uma máquina com Windows Server

O objetivo deste howto não é discutir qual é a melhor forma de realizar um backup PostgreSQL, mas sim propor uma forma de realizar um Dump da base de dados em um servidor Linux e transferir para um servidor de arquivos que rode Windows, isso é muito comum em empresas e instituições, onde muitas vezes no servidor Windows encontra-se instalada algumas ferramentas de terceiro para gerenciar fitas, robôs e etc.

Não custa citar o ótimo artigo do Fábio Telles Rodriguez, onde o mesmo deixa claro que Dump não é considerado a melhor forma de realizar um backup. Vamos lá.

Imaginemos o seguinte cenário:

  • Uma rede controlada por um Windows Active Directory – AD (Windows 2003 ou maior);
  • Um servidor de arquivos na rede, que pode estar rodando na mesma máquina do AD ou em outra;
  • Servidor Linux (Ubuntu ou outro qualquer) e rodando o SGBD PostgreSQL 8.x;

A idéia é o seguinte:

  • Uma vez por dia o SGBD PostgreSQL irá gerar um Dump da base de dados, através de uma tarefa agendada na Crontab.
  • O dump gerado será armazenado em um diretório na mesma máquina do SGBD (não é uma boa prática deixar na mesma máquina) e uma cópia do mesmo será enviado para o servidor de arquivos Windows.

Mãos a massa:

  1. Vamos considerar que o servidor Linux seja Ubuntu (ou debian) . Se estiver utilizando CentOS  é só instalar os mesmos pacotes pelo Yum Instal;

Instalando os requisitos:

# apt-get install samba samba-common smbfs smbclient

Criando a pasta que servirá de montagem:

# mkdir /mnt/ntserver

No servidor de domínio, Windows Server – Active Directory, você deve ter um usuário com privilégio de escrita na pasta compartilhada. Basta executar a linha abaixo para testar a montagem:

# mount -t smbfs //192.168.0.10/pasta_compartilhada /mnt/ntserver -o username=usuario_de_dominio,password=senha_de_dominio

Claro trocando os termos em negrito para os da sua rede.

# ls /mnt/ntserver

Com este comando deve listar o conteudo da pasta campartilhada lá do servidor de arquivos Windows. Ok, agora, vamos desmontar:

# umount /mnt/ntserver

Criando o script de backup do PostgreSQL

Criando a pasta onde ficará armazenado localmente os Dumps

# mkdir /home/bkp_pg

Crie o arquivo chamado bkp.sh

# vim /etc/init.d/bkp.sh

Insira o seguinte conteúdo:

[shell]#!/bin/sh
# script que gera backup de bases de dados PostGreSQL
# Referencia: http://www.htmlstaff.org/postgresqlmanual/app-pgdump.html
# Jonas Ferreira – jonas.ferreira@gmail.com – http://jf.eti.br
# C 2010 03 19
#

# VARIAVEIS ##################
export PGPASSWORD=postgres            # Exportando a senha do PostGreSQL para o ambiente (Ubuntu)
vU=”postgres”                          # Usuario no PostGreSQL
vP=”postgres”                        # Senha
vB=nome_base                             # Base De dados
vBI=”/usr/lib/postgresql/8.3/bin/”     # Diretorio raiz dos binarios do PostGreSQL
vR=”/home/”                                # Diretorio raiz
vD=”bkp_pg/”                     # Destino do Backup
vPre=”basePG”                       # Prefixo no nome do arquivo de saida
vE=”.dmp”                              # extencao do arquivo de saida
vH=”localhost”                      # Host do servidor
vAno=`date +%Y`                     #Ano
vMes=`date +%m`                     #Mes
vDia=`date +%d`                     #Dia
vHor=`date +%H`                     #Hora
vMin=`date +%M`                     #Min
vCod=`date +%N`                     #date [date (GNU coreutils) 5.3.0]
vDat=”$vAno$vMes$vDia-$vHor$vMin-$vCod”
vA=$vPre”-“$vB”-“$vDat$vE

# VALIDACAO ##################
if [ -z $vU ]; then
echo “Sem usuario”;
exit 0;
fi
if [ -z $vP ]; then
echo “sem senha”;
exit 0;
fi
if [ -z $vB ]; then
echo “informe o nome da base de dados”;
exit 0;
fi

# BACKUP #####################
echo “# Gerando backup. Aguarde…”
echo “# Destino: $vR$vD”
echo “# Nome do arquivo: $vA”

echo “#################################”

echo “# Compactando backup. Aguarde…”

# Caso queira gerar com inserts (arquivo fica maior)
#$vBI””pg_dump -U $vU -h $vH –inserts $vB | gzip -c > $vR$vD$vA.out.gz

# Caso queira gerar com copy (arquivo fica menor)
$vBI””pg_dump -U $vU -h $vH  $vB | gzip -c > $vR$vD$vA.out.gz

echo “#################################”
echo “# Transferindo o o arquivo para o servidor Windows…”

# Montando a pasta
mount -t smbfs //192.168.0.10/pasta_compartilhada /mnt/ntserver -o username=usuario_de_dominio,password=senha_de_dominio

# copiando o arquivo
cp $vR$vD$vA.out.gz /mnt/ntserver

# desmontando a pasta
umount /mnt/ntserver

# limpando a variavel de ambiente
export PGPASSWORD=
exit
[/shell]

 

Setando permissão de execução no script:

# chmod +x /etc/init.d/bkp.sh

Colocando o script na Crontab:

# crontab -e

Adicione a seguinte linha:

#Realizando Backup do PostgreSQL – Todos os dias a meia noite
00 00 * * * /etc/init.d/bkp.sh

Salve o arquivo e pronto, já pode testar:

# /etc/init.d/bkp.sh

Como saída, você verá algo como:

# Gerando backup. Aguarde…
# Destino: /home/bkp_pg/
# Nome do arquivo: basePG-nome_base-20111116-2012-048760000.dmp
#################################
# Compactando backup. Aguarde…
#################################
# Transferindo o o arquivo para o servidor Windows…

Verifique na pasta de destino se foi criado o arquivo:

# ls /home/bkp_pg

Deve listar o arquivo compactado:

basePG-nome_base-20111116-2012-048760000.dmp.out.gz

Verifique também lá no servidor de arquivo do Windows, na pasta compartilhada, se este mesmo arquivo existi por lá.

Pronto, você acabou de implementar uma solução de Dump de uma base PostgreSQL e transferiu para um servidor de arquivos Windows. Espero que seja útil para você.