Pesquisar este blog

quinta-feira, 18 de março de 2021

Linha de comando para verificar todos os IP da rede

 

Batch - Verificar endereço IP 

2017-2 - GTI  

 

for /L %%A in (1, 1, 254) do ( ping 10.66.28.%%A >> endereco.txt ) 

Batch para fazer a identificação de portas usando o NMAP 

2017-2 - GTI  

 

for /L %%A in (1, 1, 254) do ( c:\nmap\nmap-7.60\nmap.exe  -sV 10.66.28.%%A >> portas.txt ) 

Ou 

c:\nmap\nmap-7.60\nmap.exe  -sV 10.66.28.1-254 >> portas.txt 

BATCH - Verificar endereço IP - Isolando o resultado 

2017-2 - GTI  

for /L %%A in (1, 1, 254) do  

( 

 ping 10.66.28.%%A >> endereco.txt 

 find "Resposta de 10.66.28.%%A: bytes" C:\Users\cesar\endereco.txt >> C:\Users\cesar\limpo.txt 

) 

PLANILHA DE CALCULO DE ENDEREÇAMENTO IP 

2017-2 - GTI  

 

 

Comandos para filtrar somente os endereços IP e Portas de arquivo do NMAP   

2017-2 - ADS 

 

Comando que gera os dados para serem filtrados 

 

" c:\nmap\nmap-7.60\nmap.exe -sV 10.66.28.1-245 >> portas.txt "; 

 

Comando que filtra somente os endereços IP e portas abertas do arquivo originado do comando: 

 

" sed '/^S/d;/^=/d' portas.txt | awk '/[0-9]$/ {print " IP: " $5 "\n PORTS:\n"} /^[0-9]+\// {print "\t" $1,$2,$3 "\n"}' portas.txt > saida.txt " 

 

COMANDOS PARA FILTRAR SOMENTE O ENDEREÇO E O IP DO ARQUIVO NMAP  

 

nmap.exe -sV 127.0.0.1 >> portas.txt 

 

sed -n "/^[[:digit:]]\|scan report/p" portas.txt | gawk -f com.gawk 

 

com.gawk: 

/Nmap/{ 

print "IP: " $5 

valor = 1 

        print "Portas: " 

} 

!/Nmap/{ 

print $1 

} 

  

COMANDOS PARA FILTRAR SOMENTE O ENDEREÇO E O IP DO ARQUIVO NMAP  

 

EXECUTEI O NMAP PARA LISTAR AS PORTAS, COM O COMANDO: 

 

nmap.exe  -sV 192.168.0.107 >> portas.txt 

 

FILTREI AS LINHAS QUE TINHAM A PALAVRA 'OPEN'  E COLOQUE EM OUTRO ARQUIVO, COM O COMANDO: 

 

sed.exe -n "/open\|scan report/p" portas.txt > todasPortas.txt 

 

AGORA, FILTREI PARA PEGAR SOMENTE A PRIMEIRA COLUNA E A TERCEIRA, QUE SE REFEREM A PORTA E O SERVIÇO DELA. 

 

gawk.exe -f comandosGawk.txt portasFim.txt >> portasFinal.txt 

 

O conteúdo de 'comandosGawk.txt' possui os comandos:  

" /scan report/{ 

Print "IP: " $5 

} 

!/scan report/{ 

Print "Porta: " $1 " - Serviço: " $3  

}"  

O comando a cima, mostra para todas as linhas que tem a palavara "scan report", O texto "IP: (conteudo da 5 coluna)". 

Em seguida, exibe para todas as linhas que Não tenham 'scan report', conteudo da 1º coluna concatenado com as strings entre aspas junto com o conteudo da 3 coluna. 

 

EXERCICIO DE BDA  Listar os Pedidos do cliente ABRAHAO TEIXEIRA SERRAO 

 

SELECT * FROM pedido 

INNER JOIN cliente ON pedido.cd_cli = cliente.cod_cli where cliente.nome_cli = "ABRAHAO TEIXEIRA SERRAO"; 

 

RESOLUÇÃO DE PROBLEMAS - IDENTIFICAÇÃO DE TIPO DE CAMPO EM SQL_SCRIPT  

2017-2 - GTI 

 

Identificação de tipo de campo 

 

create table cliente ( 

cod_cli  smallint  not null, nome_cli varchar(40) not null, endereco  varchar(40)   null, cidade        varchar(20)    null, cep    char(08)       null, uf    char(02)       null, primary key (cod_cli)); 

  

create table vendedor ( 

cod_vend smallint not null, nome_vend varchar(40) not null, sal_fixo      double(9,2) not null, 

faixa_comiss    char(01)    not null, primary key (cod_vend)); 

  

create table produto ( 

cod_prod smallint not null, unid_prod char(03) not null, desc_prod varchar(20) not null, val_unit double(9,2) not null, primary key (cod_prod)); 

  

create table pedido 

( 

num_ped smallint not null, prazo_entr smallint  not null, cd_cli        smallint    not null 

REFERENCES CLIENTE (cod_cli), 

cd_vend    smallint    not null REFERENCES VENDEDOR (cod_vend), 

primary key (num_ped)); 

  

create table item_pedido ( 

no_ped    smallint    not null REFERENCES PEDIDO (num_ped), 

cd_prod    smallint    not null REFERENCES PRODUTO (cod_prod), 

qtd_ped    float    not null); 

 

 

 

CÓDIGO DO POWERSHELL PARA ACESSO À BANCO DE DADOS 

#Na tela principal acessar a pasta principal do computador 

 

cd\ 

********************************************************************************************************************* 

#Carregar o conector do banco para habilitar a conexão com o Banco de dados. 

 

 [void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data") 

 

********************************************************************************************************************* 

 

#Comando de conexão com o banco  - deve estar habilitado o xampp para liberar a comunicação 

 

Function Run-MySQLQuery { 

 

Param( 

        [Parameter( 

            Mandatory = $true, 

            ParameterSetName = '', 

            ValueFromPipeline = $true)] 

            [string]$query,    

[Parameter( 

            Mandatory = $true, 

            ParameterSetName = '', 

            ValueFromPipeline = $true)] 

            [string]$connectionString 

        ) 

Begin { 

Write-Verbose "Starting Begin Section"  

    } 

Process { 

Write-Verbose "Starting Process Section" 

try { 

 

[void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data") 

$connection = New-Object MySql.Data.MySqlClient.MySqlConnection 

$connection.ConnectionString = $ConnectionString 

Write-Verbose "Open Database Connection" 

$connection.Open() 

 

 

Write-Verbose "Run MySQL Querys" 

$command = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $connection) 

$dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($command) 

$dataSet = New-Object System.Data.DataSet 

$recordCount = $dataAdapter.Fill($dataSet, "data") 

$dataSet.Tables["data"] | Format-Table 

}  

catch { 

Write-Host "Could not run MySQL Query" $Error[0]  

}  

Finally { 

Write-Verbose "Close Connection" 

$connection.Close() 

} 

    } 

End { 

Write-Verbose "Starting End Section" 

} 

} 

 

 

********************************************************************************************************************* 

 

#Comando que estabelece EFETIVAMENTE a comunicação com o banco que você quer buscar os dados. ALTERAR USUARIO, SENHA E NOME DO BANCO 

 

$connString = "Server=localhost;Uid=SEUUSUARIO;Pwd=SUASENHA;database=NOMEDOSEUBANCODEDADOS;" 

  

 

#NO EXEMPLO ABAIXO O COMANDO ATUALIZA O NOME DE UM ITEM NA TABELA DO BANCO E LISTA A TABELA COMPLETA 

 

[array]$sQLDings += "UPDATE NOMEDOSEUBANCODEDADOS.NOMEDASUATABELADOBANCO SET NOMEDACOLUNADATABELA ='XXXXXXXXXXXX' WHERE NOMEDACOLUNADATABELA like 'XXXXXXXXXXXXXXXXX'" 

[array]$sQLDings += "SELECT * from controle.cliente" 

  

foreach($sQLquery in $SQLDings) { 

run-MySQLQuery -connectionString $connString -query $sQLquery 

 

quinta-feira, 18 de fevereiro de 2021

Como liberar memória RAM em servidores GNU/Linux

 

Como qualquer outro sistema operacional, o GNU / Linux implementou o gerenciamento de memória com eficiência e até mais do que isso. Mas se algum processo estiver consumindo sua memória e você quiser limpá-lo (liberar), o GNU/Linux fornece uma maneira de limpar o cache de RAM.



Todo sistema Linux tem três opções para limpar o cache sem interromper nenhum processo ou serviço.

1- Limpe o cache apenas:# sync; echo 1 > /proc/sys/vm/drop_caches

2- Limpar dentries e inodes:

# sync; echo 2 > /proc/sys/vm/drop_caches

3- Limpar cache, dentries e inodes.

# sync; echo 3 > /proc/sys/vm/drop_caches 

Vamos ver o que é cada coisa.

O sync limpará o buffer do sistema de arquivos. O caractere “;” é executado sequencialmente. O shell aguarda que cada comando termine antes de executar o próximo comando na sequência. Como mencionado na documentação principal, escrever drop_cache limpará o cache sem matar nenhum aplicativo/serviço, o comando echo está fazendo o trabalho de gravar em um arquivo.

Se você tiver que esvaziar o cache de disco, o primeiro comando é o mais seguro em uma empresa e produção, porque “… echo 1> ….” Apenas esvaziará o PageCache. Não é recomendado usar a terceira opção “… echo 3>” em produção até que você saiba o que está fazendo, pois você apagará PageCache, dentries e inodes.

É uma boa idéia liberar o Buffer e o Cache no GNU / Linux que podem ser usados pelo Kernel do Linux?
Quando você está aplicando várias configurações e deseja verificar se elas estão implementadas, especialmente no benchmark extenso de I/O, talvez seja necessário limpar o cache de buffer. Você pode descartar o cache conforme explicado acima sem reiniciar o sistema, ou seja, sem a necessidade de tempo de inatividade.

O GNU/Linux foi projetado de tal forma que procura no cache do disco antes de olhar para o disco. Se encontrar o recurso no cache, a solicitação não alcançará o disco. Se limparmos o cache, o cache de disco será menos útil, pois o sistema operacional procurará o recurso no disco.

Além disso, ele também reduz a velocidade do sistema por alguns segundos enquanto o cache é limpo e todos os recursos exigidos pelo sistema operacional são carregados de volta no cache de disco.

Agora vamos criar um script de shell para limpar automaticamente o cache de RAM diariamente às 2:00 através de uma tarefa Cron. Crie um arquivo de comando shell cleancache.sh e adicione as seguintes linhas:

#!/bin/bash 
# Tenha em mente que estamos usando "echo 3", mas não é recomendado na produção, em vez disso, use "echo 1". 
echo "echo 3 > /proc/sys/vm/drop_caches"

Defina a permissão de execução no arquivo limparcache.sh.

# chmod 755 limparcache.sh

Agora você pode chamar o script sempre que precisar limpar o cache de RAM.

Agora defina um cron para limpar o cache de RAM todos os dias às 2:00. Abra a guia crontab para editar.

# crontab -e

Adicione a linha abaixo, salve e saia para executar às 2:00 diariamente.

0  2  *  *  *  /caminho/a/limparcache.sh

É uma boa ideia excluir automaticamente o cache de RAM no servidor de produção?
Não! Não é. Pense em uma situação na qual você programou o script para limpar o cache de RAM todos os dias às 2 da manhã. Todos os dias às 2 da manhã o script é executado e o cache de RAM é esvaziado. Um dia, por qualquer motivo, pode haver mais usuários do que o esperado on-line em seu site, gastando recursos em seu servidor.

Ao mesmo tempo, o script é executado e apaga tudo no cache. Agora todos os usuários estão recebendo dados do disco. Isso resultará em uma falha do servidor e danificará o banco de dados. Portanto, limpe o cache de RAM somente quando necessário.

Agora, como podemos tornar a troca de memória livre?

ADVERTISEMENT
# swapoff -a && swapon -a

Você também pode adicionar o comando acima a um script cron anterior, depois de entender todo o risco associado.

Agora, combinaremos os dois comandos anteriores em um único comando para criar um script adequado para apagar o cache de RAM e o espaço de troca.

# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Cache de RAM e Swap liberadas'

O ok

$ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Cache de RAM e Swap liberadas'" root

Após testar os dois comandos, executaremos o comando “free -h” antes e depois de executar o script e verificaremos o cache.


Referência: 
King Linux
in Dicas
Retirado de: https://kinglinux.xyz/2019/06/como-liberar-memoria-ram-em-servidores-gnu-linux.html
Em : 18/02/2021


terça-feira, 16 de fevereiro de 2021

Como voltar a barra de tarefas do Linux Mint

Caso voce tenha apagado sem querer sua barra de tarefas no Linux Mint abaixo o comando que trará a barra de volta... 


Abrir o Terminal

Utilizando o Ctrl + Alt + t


E digitar o comando abaixo...


gsettings reset-recursively org.cinnamon

quarta-feira, 3 de fevereiro de 2021

Como instalar o KDE no Linux Mint

#  apt update

# apt dist-upgrade

# apt install kubuntu-desktop kde-full kde-window-manager

Escolher sddm

# apt dist-upgrade


Referencia - Canal Diolinux no Youtube
https://youtu.be/vpiaoAp8V5Q


quarta-feira, 27 de janeiro de 2021

Migrando banco de dados Access para SQLite



Este tutorial trata de como migrar um banco de dados Access para uma plataforma que possa ser executa em um ambiente GNU-Linux.

#0 – Introdução

Um banco de dados Access tem basicamente três artefatos a serem migrados:

  • o banco de dados em si

  • formulários

  • macros que utilizam dados do formulário e manipulam o banco de dados

A primeira opção seria migrar tudo para o Base do OpenOffice. É uma opção válida, que dá menos trabalho para o desenvolvedor (desde que ele saiba utilizar as macros do OpenOffice), mas neste tutorial utilizaremos uma abordagem diferente, assumindo que para o usuário final uma “aplicação pronta” é mais confortável, ou seja, o usuário não precisa saber utilizar o Base (assim como não precisaria saber o Access). Dessa forma também se esconde do usuário detalhes não tão interessantes, como as estruturas das tabelas, e além disso, fica mais fácil garantir a integridade dos dados (evita-se mais facilmente que o usuário altere dados de forma inconsistente).

Uma primeira opção seria migrar o banco de dados para MySQL, e posteriormente fazer o formulário/macros com uma linguagem tipo PHP.

Do ponto de vista do desenvolvedor, isso pode ser bem tranquilo, principalmente pelo fato de a interface gráfica ser feita em HTML.

No entanto, não será muito agradável ao usuário que antes apenas dava dois cliques para o abrir o banco de dados, se ele tiver que agora instalar o apache e configurar o banco de dados!

Então a solução aqui é explorada é o modelo de aplicação stand alone, em que o banco de dados fica armazenado em um mero arquivo, que é acessado por uma aplicação desktop.

Para esta aplicação stand alone o banco de dados escolhido foi o SQLite e a linguagem de programação para manipula-lo Java.

#1 – Exportando o banco

Seja qual for o destino da migração, o primeiríssimo passo é obter a estrutura do banco de dados, ou seja, as tabelas.

Para isso, primeiro:

$sudo apt-get install mdbtools

Para exportar a estrutura do banco de dados basta fazer:

$mdb-schema [banco_de_dados.mdb] > [exportado.sql]

Pronto, a estrutura está salva no arquivo exp.sql em código SQL, que utilizaremos mais tarde.

Neste caso, salvamos apenas a estrutura, mas há formas também de salvar os dados, sendo uma delas:

$mdb-export [banco_de_dados.mdb] [nome_da_datbela] > [exportado.csv ]

Isto gera um arquivo CSV, que nada mais do que uma planilha que pode ser facilmente visualizada no Calc ou mesmo em um editor ASCII (Gedit, Kate etc)

Obs: para saber quais são as tabelas existentes você pode consultar o arquivo SQL gerado ou fazer:

$mdb-tabales [banco_de_dados.mdb]

 


 

#2 – Importando o Banco

Agora temos que passar nossas tabelas para uma plataforma livre de banco de dados, no caso SQLite.

Para instalar:

$sudo apt-get install sqlite3

Para importar o banco de dados:

$ sqlite3 [nome_do_banco.sqlite]
SQLite version 3.6.10
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .read [exportado.sql]

Obs: no SQL gerado pelo mdb, há uma linha “DROP TABLE TabelaPrice;” que no nosso caso gerará um erro no sqlite, pois tenta remover uma tabela que não existe.

Uma solução é simplesmente excluir (ou comentar) essa linha antes de realizar a importação.

 

#3 – Acessando o SQLite no Java

O primeiro passo aqui é obter o conector para o SQLite.

No caso, eu utilizei o conector para o JDBC, que foi baixado em http://www.zentus.com/sqlitejdbc/, e optei pelo arquivo sqlitejdbc-v056.jar.

Bom, para que seu código funcione será necessário adicionar esse jar ao classpath de sua execução.

No Eclipse isto é feito no painel Configure Build Path, que pode ser acessado clicando-se com o botão direito sobre o nome do projeto, na lista de projetos.

No painel do Configure Build Path basta utilizar a opção “add external JAR”.

Pronto, agora podemos programar!

Para testar se o driver está corretamente carregado, podemos fazer:

// Testa o driver

 

try {

Class.forName("org.sqlite.JDBC");
System.out.println("Driver OK");
} catch (ClassNotFoundException e1) {
System.out.println("Driver não encontrado");
e1.printStackTrace();
}

Um vez que isto esteja OK, finalmente vamos no conectar ao banco de dados, dessa forma:

Connection con = DriverManager.getConnection("jdbc:sqlite:banco_de_dados.sqlite");

A classe Connection faz parte do pacote java.sql.

No exemplo dado estamos passando o caminho relativo do banco de dados, mas também podemos passar o absoluto dessa forma:

Connection con = DriverManager.getConnection("jdbc:sqlite:file:/home/leo/banco_de_dados.sqlite");

Agora para finaizar, um exemplo de uma consulta simples:

 

 

// consulta
Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery("SELECT * FROM Tabela");
while(rs.next()) {
System.out.println("Parcela: " + rs.getInt("ID"));
System.out.println("Juros: " + rs.getString("Nome"));
}

Agora pode-se traduzir a lógica das macros para a linguagem Java.

Um último passo, não abordado neste tutorial seria a construção de uma interface gráfica para o usuário com API Swing.

 

Tutorial retirado de: https://polignu.org/artigo/migrando-banco-de-dados-access-para-sqlite
Em : 27/01/2021
Criado por: Leonardo Leite