Enviando e-mails com VBscript e SMTP do Gmail

Bom dia galera,segue um script para enviar e-mails de possíveis alertas
do seu Rwindows ou vai da sua imaginação, hehehe.

on error resume next

Const schema   = "http://schemas.microsoft.com/cdo/configuration/"
Const cdoBasic = 1
Const cdoSendUsingPort = 2
Dim oMsg, oConf

' Propriedades do email
Set oMsg      = CreateObject("CDO.Message")
oMsg.From     = "pablogomezcorrea@gmail.com" ' ou "Nome do remetente "
oMsg.To       = "teste@destino.com.br"       ' ou "Nome do destino "
oMsg.Subject  = "Teste de VBscript"
oMsg.TextBody = "Mensagem enviada com sucesso !!! Enjoy it"

' Configuração e autenticação do seu servidor de SMTP Gmail
Set oConf = oMsg.Configuration

'Endereço do servidor de SMTP
oConf.Fields(schema & "smtpserver")       = "smtp.gmail.com"

'Número da porta
oConf.Fields(schema & "smtpserverport")   = 465

oConf.Fields(schema & "sendusing")        = cdoSendUsingPort

'Tipo de autenticacao
oConf.Fields(schema & "smtpauthenticate") = cdoBasic

'Uso da Encriptação SSL
oConf.Fields(schema & "smtpusessl")       = True

'Envia username
oConf.Fields(schema & "sendusername")     = "pablogomezcorrea@gmail.com"

'Envia password
oConf.Fields(schema & "sendpassword")     = "12345678"

oConf.Fields.Update()

' Envia mensagem
oMsg.Send()

' Retorna o status da mensagem
If Err Then
    resultMessage = "ERROR " & Err.Number & ": " & Err.Description
    Err.Clear()
Else
    resultMessage = "Mensagem enviada com sucesso !!!"
End If

Wscript.echo(resultMessage)

Scan na rede com NMAP e gerando relatório em HTML

Opa, estamos aí novamente, neste post eu vou mostrar um pouco de quanto o nmap pode ser útil no seu dia a dia. Vou mostrar como realizar o scan e gerar um relatório em HTML, não sei porque, mas as pessoas gostam dessas coisas gráficas para gastar memória, processador e etc, isso não vem ao caso agora, mas assim, acho que somente a tela preta iria resolver o problema, kkkk.

Requisitos
Instalar o pacote nmap
Instalar o pacote xsltproc

Segue como instalar

shadow@lab:~/apt-get install nmap xsltproc

Fazendo varredura na sua rede com o nmap

shadow@lab:~/sudo nmap -sT -v -P0 -p 80 192.168.1.0/24 -oX rede_sua.xml

Gerando o relatório em HTML

shadow@lab:~/xsltproc rede_sua.xml -o rede_sua.html

Segue o relatório que foi gerado

nmap01

 

nmap02

Check your Web Application status (Python)

Hello everyone, today I will show a little script in Python that I created to restart some web application that was forced to stop. It’s a simple application, sure that you need make a analysis to find the “why your application was stopped”, but you can adapt this script to send an email warning you or you can send an alert to Nagios or Zabbix (Monitoring tools). You can use the shell script to do it, but with the Python you have the possibility to import libraries specific to some tasks, it will grow up your possibilities.


# You will need import this libraries
# requests is responsible to return the HTTP status that you requested
import requests
# os is responsible to execute commands of your operate system
import os

response = requests.get('http://www.cybersoul.com.br/CybersoulSite')

# Follow below the response with HTTP status
# I received the status at the variable code
code = response.status_code
if code != 200:
        print "Status: ", code
        print "Restarting Glassfish..."

        # Here we have the os library she is responsible
        # to execute Linux commands, at this example
        # I killed the Glassfish and restarted after that.
        os.system("kill -9 `ps aux | grep glassfish | grep -v grep | awk '{print $2}'`")
        os.system("/opt/glassfish4/glassfish/bin/startserv &")
        print "Glassfish started"
else:
        print "Status: ", code
        print "Glassfish OK"

Follow below some HTTP Status that you can make a specific treatment, this status you can consult at the website w3schools if you wanna know more about that.

1xx: Information

Message: Description:
100 Continue The server has received the request headers, and the client should proceed to send the request body
101 Switching Protocols The requester has asked the server to switch protocols
103 Checkpoint Used in the resumable requests proposal to resume aborted PUT or POST requests

2xx: Successful

Message: Description:
200 OK The request is OK (this is the standard response for successful HTTP requests)
201 Created The request has been fulfilled, and a new resource is created
202 Accepted The request has been accepted for processing, but the processing has not been completed
203 Non-Authoritative Information The request has been successfully processed, but is returning information that may be from another source
204 No Content The request has been successfully processed, but is not returning any content
205 Reset Content The request has been successfully processed, but is not returning any content, and requires that the requester reset the document view
206 Partial Content The server is delivering only part of the resource due to a range header sent by the client

3xx: Redirection

Message: Description:
300 Multiple Choices A link list. The user can select a link and go to that location. Maximum five addresses
301 Moved Permanently The requested page has moved to a new URL
302 Found The requested page has moved temporarily to a new URL
303 See Other The requested page can be found under a different URL
304 Not Modified Indicates the requested page has not been modified since last requested
306 Switch Proxy No longer used
307 Temporary Redirect The requested page has moved temporarily to a new URL
308 Resume Incomplete Used in the resumable requests proposal to resume aborted PUT or POST requests


4xx: Client Error

Message: Description:
400 Bad Request The request cannot be fulfilled due to bad syntax
401 Unauthorized The request was a legal request, but the server is refusing to respond to it. For use when authentication is possible but has failed or not yet been provided
402 Payment Required Reserved for future use
403 Forbidden The request was a legal request, but the server is refusing to respond to it
404 Not Found The requested page could not be found but may be available again in the future
405 Method Not Allowed A request was made of a page using a request method not supported by that page
406 Not Acceptable The server can only generate a response that is not accepted by the client
407 Proxy Authentication Required The client must first authenticate itself with the proxy
408 Request Timeout The server timed out waiting for the request
409 Conflict The request could not be completed because of a conflict in the request
410 Gone The requested page is no longer available
411 Length Required The “Content-Length” is not defined. The server will not accept the request without it
412 Precondition Failed The precondition given in the request evaluated to false by the server
413 Request Entity Too Large The server will not accept the request, because the request entity is too large
414 Request-URI Too Long The server will not accept the request, because the URL is too long. Occurs when you convert a POST request to a GET request with a long query information
415 Unsupported Media Type The server will not accept the request, because the media type is not supported
416 Requested Range Not Satisfiable The client has asked for a portion of the file, but the server cannot supply that portion
417 Expectation Failed The server cannot meet the requirements of the Expect request-header field

5xx: Server Error

Message: Description:
500 Internal Server Error A generic error message, given when no more specific message is suitable
501 Not Implemented The server either does not recognize the request method, or it lacks the ability to fulfill the request
502 Bad Gateway The server was acting as a gateway or proxy and received an invalid response from the upstream server
503 Service Unavailable The server is currently unavailable (overloaded or down)
504 Gateway Timeout The server was acting as a gateway or proxy and did not receive a timely response from the upstream server
505 HTTP Version Not Supported The server does not support the HTTP protocol version used in the request
511 Network Authentication Required The client needs to authenticate to gain network access

Any questions? Do you liked this post? Please comment and share with your friends, thank you and see you later.

Criando um repositório Git no seu servidor Linux

Boa tarde pessoal, hoje vou mostrar como instalar um repositório Git no seu servidor Linux CentOS para que você possa estar versionando suas aplicações. O primeiro passo é baixar o Git, segue abaixo como instalar:

Servidor Remoto

[root@shadow ~]# yum install git-core curl-devel \
 expat-devel gettext-devel openssl-devel zlib-devel

Após instalar o Git no seu servidor é interessante organizar a coisa toda. Então vamos criar um usuário git com o seu diretório home.

[root@shadow ~]# useradd git
[root@shadow ~]# passwd git
[root@shadow ~]# cd /home/git

Aqui costumo criar um diretório p/ cada projeto, vai de cada um, mas prefiro assim pois pode ser que não seja do seu interesse que todos acessem todos os projetos.

[root@shadow git]# mkdir teste.com.br

Inicializando sua estrutura no servidor

[root@shadow teste.com.br]# pwd
/home/git/teste.com.br

[root@shadow teste.com.br]# git --bare init
Initialized empty Git repository in /home/git/teste.com.br/

[root@shadow teste.com.br]# git config --bool core.bare true

Segue a estrutura que foi criada no diretório

 
[root@shadow teste.com.br]# ls -lha
total 40K
drwxr-xr-x 7 root root 4.0K Sep 24 03:10 .
drwx------ 4 git  git  4.0K Sep 24 03:10 ..
drwxr-xr-x 2 root root 4.0K Sep 24 03:10 branches
-rw-r--r-- 1 root root   66 Sep 24 03:10 config
-rw-r--r-- 1 root root   73 Sep 24 03:10 description
-rw-r--r-- 1 root root   23 Sep 24 03:10 HEAD
drwxr-xr-x 2 root root 4.0K Sep 24 03:10 hooks
drwxr-xr-x 2 root root 4.0K Sep 24 03:10 info
drwxr-xr-x 4 root root 4.0K Sep 24 03:10 objects
drwxr-xr-x 4 root root 4.0K Sep 24 03:10 refs

Aqui nosso servidor está pronto p/ receber as atualizações. Vou mostrar abaixo como configurar o seu Linux e o seu Netbeans para fazer as atualizações, vai ser legal eu acho.

Repositório Local

Abra o seu Netbeans e mãos à obra, clique na opção Team -> Git -> Clone. Percebam que o [shadow.com.br] é o nome do seu servidor e o [teste.com.br] é o nome do diretório que criamos anteriormente no servidor. Nos campos Username você coloca o usuário que criamos no servidor linux e a senha no nosso caso aqui é o usuário git e a senha que você achar melhor.

netbeans01

Aqui você vai clicar em Finish

Netbeans02

Bom aqui finaliza a instalação e configuração do Git, é isso aí acho que agora vocês já tem um start da instalação, mas este serviço é muito mais amplo ainda, legal de explorar, tomara que tenham gostado.

Problemas encontrados

Ao executar o push depois de dar um commit em um determinado arquivo recebi a mensagem REJECTED_OTHER_REASON.

=============================================================

==[IDE]== Sep 28, 2013 12:48:50 PM Pushing – br.com.cybersoul
git branch
git remote -v
setting up remote: origin
git push git.cybersoul.com.br:br.com.cybersoul refs/heads/master:refs/heads/master
Remote Repository Updates
Branch Add : master
Id : e717cebbb00b65cdb0fa0970c871a1a61d30bc9e
Result : REJECTED_OTHER_REASON

Local Repository Updates
Branch Add : origin/master
Id : e717cebbb00b65cdb0fa0970c871a1a61d30bc9e
Result : NOT_ATTEMPTED

==[IDE]== Sep 28, 2013 12:48:59 PM Pushing – br.com.cybersoul finished.

=============================================================

Para que ele não rejeite sua atualização você deve executar um comando no seu servidor Git:

git config --bool core.bare true

Após executar o comando e realizar push sua atualização será completada com sucesso. Conforme o exemplo abaixo:

=============================================================

==[IDE]== Sep 28, 2013 12:50:27 PM Pushing – br.com.cybersoul
git branch
git remote -v
setting up remote: origin
git push git.cybersoul.com.br:br.com.cybersoul refs/heads/master:refs/heads/master
Remote Repository Updates
Branch Add : master
Id : e717cebbb00b65cdb0fa0970c871a1a61d30bc9e
Result : OK

Local Repository Updates
Branch Add : origin/master
Id : e717cebbb00b65cdb0fa0970c871a1a61d30bc9e
Result : NEW

git branch –set-upstream-to origin/master master
Branch master set to track origin/master

==[IDE]== Sep 28, 2013 12:50:29 PM Pushing – br.com.cybersoul finished.

Configurando o SAMBA no linux sem senha

Boa tarde,

Hoje vamos configurar o SAMBA em modo share sem senha, é rápido e simples, eu utilizo muito para realizar Laboratórios integrando Linux e Windows, o samba como quase todos já sabem é um serviço de compartilhamento de arquivos. Bom, vamos lá, abaixo vou mostrar de uma maneira simples como se faz para instalar e configurar o serviço.

Primeiramente você irá instalar o samba

root@lablinux:/home# apt-get install samba

 

Em seguida você irá editar o arquivo de configuração do samba. No bloco Global do samba você irá alterar ou adicionar a seguinte linha:

root@lablinux:~# vim /etc/samba/smb.conf

 

No arquivo de configuração você irá adicionar ou alterar
a opção security para share conforme exemplo abaixo:

####### Authentication #######

# “security = user” is always a good idea. This will
# require a Unix account
# in this server for every user accessing the server. See
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
# in the samba-doc package for details.
# security = user

security = share

 

Abaixo criei o diretório /home/samba e dei permissão 777 no diretório,
essa configuração não envolve nenhuma segurança no ambiente, como autenticação
em um domínio por exemplo, é uma configuração somente para compartilhar arquivos de
uma maneira rápida

[laboratorio]
# Comentário
comment = Laboratorio
# Essa opção é para exibir o diretório
browseable = yes
# Aqui é para ativar o modo de escrita no diretório
writeable = yes
# Caminho do diretório a ser compartilhado
path = /home/samba
create mask = 0600
directory mask = 0700
# Definindo como público
public = yes
# Liberando visitantes no diretório
guest ok = yes

 

Reinicie o serviço e seja feliz !!!

root@lablinux:~# /etc/init.d/smbd restart

 

Executando programas externos com Runtime em JAVA

Neste código abaixo mostro como chamar um determinado comando do windows pelo seu código em java. Neste exemplo o código em java executa o notepad.exe exibindo o mesmo na tela. É muito interessante para automatizar alguns processos do windows, sabe como é né…


import java.io.IOException;

public class ExecutaComando {
    public static void main(String argv[]) {
        // Recebendo a string como parametros
        String comando = "cmd /c C:/windows/system32/notepad.exe";
        try {
            /*
             * O método Runtime é o responsável por executar
             * o programa que foi recebido como parametro.
             */

            Runtime.getRuntime().exec(comando);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Instalando Glassfish no Linux

Boa tarde, vamos ver como instalar um container de aplicações(Glassfish) no Linux, não há ciência nenhuma em fazer isso. Em primeiro lugar segue abaixo o link para que você possa baixar o pacote de instalação.

Alguns comandos úteis para administração do Glassfish

Inicializa o servidor do Glassfish

./glassfish4/bin/asadmin start-domain domain1

Reinicia o servidor do Glassfish

./glassfish4/bin/asadmin restart-domain domain1

Para o servidor do Glassfish

./glassfish4/bin/asadmin stop-domain domain1

Altera a senha do admin do domínio

./glassfish4/bin/asadmin change-admin-password --domain_name domain1

Habilita a conexão remota segura para o Glassfish, de acordo com a mensagem “Secure Admin must be enabled to access the DAS remotely”

./glassfish4/bin/asadmin enable-secure-admin --port 4848

Download do Glassfish

Agora para que seja realizada a instalação é necessário que você descompacte o pacote no diretório aonde você deseja que ele fique.

[pablo@shadow]$ cd /opt/
[pablo@shadow opt]$ wget http://download.java.net/glassfish/4.0/release/glassfish-4.0.zip
[pablo@shadow opt]$ unzip glassfish-4.0.zip

Configurando o Glassfish

Agora vamos primeiro remover e depois criar nosso novo domínio no Glassfish

Removendo o domínio padrão
[pablo@shadow glassfish]$ rm -rf glassfish4/glassfish/domains/domain1

No momento da criação do domínio será requisitada uma senha para o domínio:

Criando o domínio padrão
[pablo@shadow glassfish]$ ./glassfish4/bin/asadmin -create-domain --adminport 4848 domain1
Enter admin user name [Enter to accept default "admin" / no password]>admin
Enter the admin password [Enter to accept default of no password]> 
Enter the admin password again> 
Using port 4848 for Admin.
Using default port 8080 for HTTP Instance.
Using default port 7676 for JMS.
Using default port 3700 for IIOP.
Using default port 8181 for HTTP_SSL.
Using default port 3820 for IIOP_SSL.
Using default port 3920 for IIOP_MUTUALAUTH.
Using default port 8686 for JMX_ADMIN.
Using default port 6666 for OSGI_SHELL.
Using default port 9009 for JAVA_DEBUGGER.
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=shadow,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US]
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=shadow-instance,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US]
Domain domain1 created.
Domain domain1 admin port is 4848.
Domain domain1 admin user is "admin".
Command create-domain executed successfully.

Inicializando o servidor

[pablo@shadow glassfish]$ ./glassfish4/bin/asadmin start-domain domain1
Waiting for domain1 to start ......
Successfully started the domain : domain1
domain  Location: /home/pablo/glassfish/glassfish4/glassfish/domains/domain1
Log File: /home/pablo/glassfish/glassfish4/glassfish/domains/domain1/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.

glassfish01

Conforme podemos ver a mensagem na imagem acima “Secure Admin must be enabled to access the DAS remotely“. Bom, para resolver este problema devemos ativar o acesso remoto ao administrador do Glassfish conforme instruções abaixo:

[pablo@shadow bin]$ ./asadmin --host cybersoul.com.br --port 4848 enable-secure-admin
Enter admin user name>  admin
Enter admin password for user "admin"> 
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.

[pablo@shadow bin]$ ./asadmin restart-domain domain1
Successfully restarted the domain
Command restart-domain executed successfully.

Agora vamos logar, informe a senha que cadastrou na criação do domínio.

glassfish02

Segue a tela depois do acesso:

glassfish03

Agora é possível fazer deploy das aplicações, cluster de containers, ativar o que será monitorado pelo Glassfish (Threads, Web Container, Pool de conexões JDBC e etc) e tudo pela interface de administração. Qualquer dúvida favor enviar seus comentários.

Adicionando ou removendo um processo da inicialização do Ubuntu

Neste post vamos ver como adicionar ou remover um processo da inicialização do Linux Ubuntu, prático rápido e simples.

Como exemplo vou remover o postfix da inicialização, segue comando:

shadow@ubuntu:~$ sudo update-rc.d -f postfix remove
 Removing any system startup links for /etc/init.d/postfix ...
   /etc/rc0.d/K20postfix
   /etc/rc1.d/K20postfix
   /etc/rc2.d/S20postfix
   /etc/rc3.d/S20postfix
   /etc/rc4.d/S20postfix
   /etc/rc5.d/S20postfix
   /etc/rc6.d/K20postfix

Bom, para deixarmos o processo inicializando no Ubuntu, basta executar o seguinte comando:

shadow@ubuntu:~$ sudo update-rc.d -f postfix defaults
 Adding system startup for /etc/init.d/postfix ...
   /etc/rc0.d/K20postfix -> ../init.d/postfix
   /etc/rc1.d/K20postfix -> ../init.d/postfix
   /etc/rc6.d/K20postfix -> ../init.d/postfix
   /etc/rc2.d/S20postfix -> ../init.d/postfix
   /etc/rc3.d/S20postfix -> ../init.d/postfix
   /etc/rc4.d/S20postfix -> ../init.d/postfix
   /etc/rc5.d/S20postfix -> ../init.d/postfix

Agora vamos personalizar um script e inicializar ele no seu Ubuntu. Primeiramente crie seu script no diretório /etc/init.d


shadow@ubuntu:/etc/init.d$

shadow@ubuntu:/etc/init.d$ vim meuscript

#!/bain/bash
echo "Teste de inicializacao !!!"

Agora queremos adicionar nosso script para inicializar sempre:

shadow@ubuntu:~$ sudo update-rc.d -f meuscript defaults
update-rc.d: warning: /etc/init.d/meuscript missing LSB information
update-rc.d: see 
 Adding system startup for /etc/init.d/meuscript ...
   /etc/rc0.d/K20meuscript -> ../init.d/meuscript
   /etc/rc1.d/K20meuscript -> ../init.d/meuscript
   /etc/rc6.d/K20meuscript -> ../init.d/meuscript
   /etc/rc2.d/S20meuscript -> ../init.d/meuscript
   /etc/rc3.d/S20meuscript -> ../init.d/meuscript
   /etc/rc4.d/S20meuscript -> ../init.d/meuscript
   /etc/rc5.d/S20meuscript -> ../init.d/meuscript

Dúvidas ??? Só postar !!!

Incrementando valores em uma variável em Shell Script

Fiz um pequeno script para contabilizar algumas ações que não vem ao caso agora. É um contador, no exemplo abaixo a variável cont recebe o valor 0 que irá incrementar até 10 mais abaixo no while “em português enquanto, é utilizado para repetir até aonde vc determinar” no meu código irá contar até 5.
Uma coisa importante é o uso do “let” que avalia expressões aritiméticas.

#!/bin/bash
cont=0;
while [ $cont -lt 5 ]; do
   echo "Contador: $cont";
   let cont=$cont+1;
done

Segue o resultado após executar o script

sh-4.1$ sh contador.sh
Contador: 0
Contador: 1
Contador: 2
Contador: 3
Contador: 4

#ficadica