Imagine a situação de, em seu ambiente de TI, possuir um servidor de arquivos ou web para vários domínios, cada um com uma subnet (faixa de IP) diferente, e necessitar de oferecer serviços com um único servidor.
Nesta situação, ao invés de configurar diversos "alias" de IP para uma única interface, uma solução interessante seria definir uma interface própria para cada domínio (subnet) que seu servidor atendesse!
Muitos não sabem, mas é possível ter em uma máquina virtual com mais de 4 interfaces de rede no VirtualBOX!
Pelo modo gráfico, a interface de gerenciamento do VirtualBOX só exibe 4 abas de configuração de adaptadores de rede. Mas, dependendo do chipset que for utilizado na VM, será possível configurar até 36 interfaces!
Isso mesmo: 36!
Só há um problema: Não será possível visualizar todas as interfaces pela janela do modo gráfico do VirtualBOX. Apenas 4 adaptadores de rede ficarão disponíveis para configuração (e 8 visíveis). As outras 32 interfaces, você terá que gerenciá-las pela linha de comando! Veja foto abaixo.
O chipset PIIX3 permite o uso de até 8 interfaces. Enquanto que, o chipset ICH9, permite até 36 interfaces!
Primeiramente, devemos alterar o chipset que é definido por padrão na criação da VM, que é oPIIX3, para o ICH9. Para isto, você deverá executar o comando vboxmanage, para modificar este parâmetro de sua VM.
No exemplo, minha VM é identificada pelo nome "Debian8-FileServer-1". Portanto, o comando seria:
marciocbravim@desktop01:~$ vboxmanage modifyvm Debian8-FileServer-1 --chipset ich9
Para realizar esta tarefa na linha de comandos do Windows (cmd) execute o "Prompt de Comando" (Menu Iniciar > Todos os Programas > Acessórios > Prompt de Comando) e digite:
C:\Users\Marcio Bravim> cd "C:\Program Files\Oracle\VirtualBox"
C:\Program Files\Oracle\VirtualBox> .\VBoxManage.exe modifyvm Debian8-FileServer-1 --chipset ich9
Caso queira modificar esta opção pelo modo gráfico, na janela de configuração da máquina virtual, vá no item Sistema e, na aba Placa-Mãe, altere o chipset da VM (veja foto abaixo).
E, para criar uma única interface pela linha de comando, execute o comando abaixo:
marciocbravim@desktop01:~$ vboxmanage modifyvm Debian8-FileServer-1 --nic1 bridged --bridgeadapter1 eth0 --nictype1 82540EM --cableconnected1 on --nicspeed1 1000000
Para criar com um único comando as 36 interfaces possíveis com o chipset ICH9, podemos utilizar uma instrução de laço de repetição, o for. Para tanto, digite:
marciocbravim@desktop01:~$ for VAR in `seq 1 36` ; do vboxmanage modifyvm Debian8-FileServer-1 --nic${VAR} bridged --bridgeadapter${VAR} eth0 --nictype${VAR} 82540EM --cableconnected${VAR} on --nicspeed${VAR} 1000000 ; done
Para realizar esta tarefa na linha de comandos do Windows, digite:
C:\Users\Marcio Bravim> for /l %x in (1, 1, 36) do "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyvm Debian8-FileServer-1 --nic%x bridged --nictype%x 82540EM --cableconnected%x on --nicspeed%x 1000000
NOTA: Depois do "for", o caracter é "barra-éle"
#=------
Leu? Deixe um comentário! E Indique! Obrigado!!!
#=------
AUTOR:
Marcio C. Bravim (RJ) – Certificado LPI 3 e RHCE
Consultor Linux / Instrutor
marcio.cbravim@yahoo.com.br / @marciocbravim
Whatsapp (21) 96488-6449
http://marciocbravim.blogspot.com.br/2016/07/mais-de-4-placas-de-rede-em-uma-vm-no.html
segunda-feira, 18 de julho de 2016
terça-feira, 24 de maio de 2016
Configurando Interface e desabilitando ipv6 no Debian 8 Jessie
Mudar para o endereço IP estático, se você usar o Debian como um servidor.
root@dlp:~#echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
root@dlp:~#sysctl -p
net.ipv6.conf.all.disable_ipv6 = 1
root@dlp:~#ifconfig
|
vi /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
# comment out
#
iface eth0 inet dhcp
# add follows
iface eth0 inet static
address 10.0.0.30
# IP address
network 10.0.0.0
# network address
netmask 255.255.255.0
# subnet mask
broadcast 10.0.0.255
# broadcast address
gateway 10.0.0.1
# default gateway
dns-nameservers 10.0.0.10
# name server
systemctl restart ifup@eth0
|
| Desabilitar IPv6 caso necessário. |
root@dlp:~#echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
root@dlp:~#sysctl -p
net.ipv6.conf.all.disable_ipv6 = 1
root@dlp:~#ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:9d:56:58
inet addr:10.0.0.30 Bcast:10.0.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:346 errors:0 dropped:0 overruns:0 frame:0
TX packets:263 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:33839 (33.0 KiB) TX bytes:32449 (31.6 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
segunda-feira, 16 de maio de 2016
Montando partições automaticamente
Entendendo o FSTAB
Quem usa Windows e Linux no mesmo computador (dual boot) com certeza já usou o comando mount para poder "enxergar" os arquivos do Windows no Linux.
Com o passar do tempo fica muito cansativo ter que ficar digitando o
mesmo comando toda vez que o Linux é iniciado. Seria muito bom se o
sistema de arquivos fosse montado automaticamente na inicialização e com
o arquivo fstab isso é possível.
O arquivo /etc/fstab é responsável pela entrada de partições e/ou dispositivos que possuam os sistemas de arquivos. Abaixo segue um exemplo do arquivo /etc/fstab:
# cat /etc/fstab
O arquivo /etc/fstab é responsável pela entrada de partições e/ou dispositivos que possuam os sistemas de arquivos. Abaixo segue um exemplo do arquivo /etc/fstab:
# cat /etc/fstab
/dev/hda3 swap swap defauts 0 0 /dev/hda2 / reiserfs defaults 0 0 /dev/fd0 /mnt/floppy auto defaults,user,noauto 0 0 /dev/cdrom /mnt/cdrom iso9660 defaults,user,noauto,ro 0 0
Coluna 3 - Curto e grosso, é onde informamos o sistema de arquivo do disco/partição. Temos disponíveis "algumas" opções:
adfs, affs, autofs, coda, coherent, cramfs, devpts, efs, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, ntfs, proc, qnx4, reiserfs, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat, xenix, xfs.
Para mais tipos de sistema e detalhes, veja a página de manual do mount:
$ man mount
Uma ressalva a fazer é a opção "auto", que diz para o sistema automaticamente detectar o sistema de arquivo presente na partição.
É possível excluir ou adicionar partições e/ou dispositivos seguindo os seguintes significados das colunas:
1ª Coluna
Especificação do arquivo do dispositivo que será montado.
2ª Coluna
É o local (diretório) onde o dispositivo especificado na 1ª será montado, Ex:
Disco 1: /boot, /, /var e o Swap
Disco 2: /home
Disco 3: /backup
Disco 4: /backup2
3ª Coluna
É o tipo de sistema sistema de arquivos.
ext2 - Sistema de arquivos do Linux;
ext3 - Sistema de arquivos journaling (ext2 + journaling);
reiserfs - Sistema de arquivos journaling do Linux;
msdos - Sistema de arquivos MS-DOS;
vfat - Sistema de arquivos Win9x;
ntfs - Sistema de arquivos Win2k, XP;
iso9660 - Sistema de arquivos do CD-ROM;
auto - Detecta o tipo de sistema automaticamente.
e outros:
adfs, affs, autofs, coda, coherent, cramfs, devpts, efs, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, ntfs, proc, qnx4, reiserfs, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat, xenix, xfs.
Para mais tipos de sistema e detalhes, veja a página de manual do mount:
$ man mount
4ª ColunaA coluna 4 descreve as opções de montagem da partição/disco associadas
ao sistema de ficheiros. Aqui podemos fazer várias configurações afim de
personalizarmos nosso sistema.
Uma opção muito utilizada por administradores de sistemas é a opção de
bloquear o uso da unidade de disquetes e cdrom (não que eu seja de
acordo, sou a favor da liberdade).
Vamos as opções:
- auto, noauto - Diz para o sistema se deve ou não montar automaticamente. Se colocar a opção "auto", o sistema irá montar no boot, se estiver "noauto", terá que montar o disco/partição manualmente. Default: auto.
- user, nouser - Aqui é onde permitimos ou não os usuários montarem o disco/partição. Colocando "user", qualquer usuário consegue montar, se colocarmos "nouser", apenas o super usuário conseguirá montar (root). Default: user.
- exec, noexec - Permite ou não a execução de binários no sistema de arquivos. Default: exec (imagine que, por engano, coloque noexec no /).
- rw - Monta o sistema de ficheiros com a opção Read-Write, ou seja, leitura e escrita.
- ro - Monta o sistema de ficheiros com a opção Read-Only, ou seja, somente leitura.
- sync, async - Diz ao sistema como deve ser a sincronização de
dados (Input/output). Explicando melhor, diz como o sistema deve
proceder quando tem que escrever no disco, se deve guardar em memória
primeiro, aguardar confirmação e então escrever ou se escreve
directamente (fisicamente) no disco/partição/disquete.
Um exemplo, são as "pendrives", quando você escreve um documento de texto na sua pen, se estiver a opção sync, o sistema escreve na hora o documento na pen, se estiver async, o sistema apenas escreve o documento quando você for desmontar a pen. O grande problema coloca-se quando o utilizador esquece de desmontar o drive. Default: async. - suid, nosuid - Habilita/desabilita o bit de set-user-identifier ou set-group-identifier.
- defaults - Diz ao sistema para carregar as opções padrão, que são: rw, suid, dev, exec, auto, nouser e async.
5ª Coluna
Dump para o dispositivo.Esta coluna é a opção de dump do sistema, que nada mais é do que um utilitário de backup do sistema. O dump "lê" aqui o número e decide se o sistema deve ou não ser feito backup. Se estiver 0 (zero), o dump simplesmente ignora o disco/partição.
0 - Não faz dump;
1 - Faz dump.
6ª Coluna
Verificação e reparo do dispositivo. Esta coluna é utilizada pelo fsck para a verificação dos
discos/partições. Partições/discos de sistema normalmente tem esta opção
como 1, outras partições do sistema como 2. Sistemas de arquivos no
mesmo disco são verificados sequencialmente, enquanto que sistemas de
arquivos em discos diferentes são verificados ao mesmo tempo, utilizando
a função de paralelismo (se o hardware permitir). Se colocar esta opção
como 0 (zero), o fsck conclui não ser necessário a verificação aqui.
0 - Não faz a verificação e reparo.
1 - Faz a verificação e reparo.
Montando os dispositivos
Vamos imaginar o seguinte cenário: você tem o Windows e o Linux instalados no seu HD de 40GB, teoricamente você teria 3 partições: 1 ntfs ou fat para Windows, 1 ext2, ext3 etc e 1 swap, ambas para o Linux. E se quisermos montar a partição Windows no Linux automaticamente toda vez que ele for iniciado?Primeiro crie um diretório que será usado para montar o dispositivo:
# mkdir /mnt/windows
Agora acrescente a seguinte linha no /etc/fstab:
mount /dev/hda1 /mnt/windows ntfs defaults,user,auto 0 0
Essa linha monta o conteúdo do hda1 (c:) dentro do diretório /mnt/windows automaticamente, que pode montado/desmontado por qualquer usuário do sistema. Detalhe: quando o tipo de partição for ntfs, será necessário colocar o rw na 4ª coluna, caso contrário você não poderá criar ou excluir arquivos e/ou pastas. Ex:
mount /dev/hda1 /mnt/windows ntfs defaults,user.rw,auto 0 0
Exemplo do meu fstab:
cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
#Entry for /dev/sda6 :
UUID=7ef92b10-48c6-44c3-b5fd-5056f3774ea0 / ext4 errors=remount-ro 0 1
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
#Entry for /dev/sda6 :
UUID=7ef92b10-48c6-44c3-b5fd-5056f3774ea0 / ext4 errors=remount-ro 0 1
#Entry for /dev/sda3 :
UUID=2CA42702A426CE60 /media/Dados ntfs-3g defaults,locale=pt_BR.UTF-8 0 0
UUID=2CA42702A426CE60 /media/Dados ntfs-3g defaults,locale=pt_BR.UTF-8 0 0
#Entry for /dev/sda5 :
UUID=8f22e3df-9de3-4a71-a4a1-99cfea9ee734 none swap sw 0 0
Comando para descobrir o UUID do Disco:UUID=8f22e3df-9de3-4a71-a4a1-99cfea9ee734 none swap sw 0 0
ls -lh /dev/disk/by-uuid/*
ou
sudo blkid
VNC (Virtual Network Computing) Raspberry Pi
Às vezes não é conveniente para trabalhar diretamente sobre o Raspberry Pi. Talvez você gostaria de trabalhar com ele a partir de outro computador por controle remoto.
VNC é um sistema de compartilhamento de desktop gráfico que lhe permite controlar remotamente a interface de desktop de um computador a partir de outro. Ele transmite os eventos de teclado e mouse do controlador, e recebe atualizações para a tela através da rede do host remoto.
Você verá a área de trabalho do Raspberry Pi dentro de uma janela no seu computador. Você será capaz de controlá-lo como se você estivesse trabalhando no próprio Raspberry Pi.
VNC é um sistema de compartilhamento de desktop gráfico que lhe permite controlar remotamente a interface de desktop de um computador a partir de outro. Ele transmite os eventos de teclado e mouse do controlador, e recebe atualizações para a tela através da rede do host remoto.
Você verá a área de trabalho do Raspberry Pi dentro de uma janela no seu computador. Você será capaz de controlá-lo como se você estivesse trabalhando no próprio Raspberry Pi.
- Em seu Pi (usando um monitor ou via SSH ), instale o pacote TightVNC:
sudo apt-get install tightvncserver - Em seguida, execute TightVNC servidor que irá pedir-lhe para digitar uma senha e uma vista só de senha opcional:
tightvncserver - Iniciar um servidor VNC a partir do terminal: Este exemplo inicia uma sessão em exibição VNC (uma
:1) com resolução full HD:
vncserver :1 -geometry 1920x1080 -depth 24
Note-se que, uma vez por padrão uma sessão X é iniciada no visor zero, você receberá um erro no caso de você usar:0.
-
Desde há agora dois X sessões em execução, o que, normalmente, seria um
desperdício de recursos, sugere-se para parar o displaymanager execução
em
:0usando
service lightdm stop - Agora, no seu computador, instalar e executar o cliente VNC:
- Em uma máquina Linux instalar o pacote
xtightvncviewer:
sudo apt-get install xtightvncviewer- Caso contrário, TightVNC está disponível para download a partir tightvnc.com
- Em uma máquina Linux instalar o pacote
Automação e execução durante o boot
Você pode criar um arquivo simples com o comando para executar o servidor VNC na Pi, para salvar ter que se lembrar que:- Criar um arquivo que contém o seguinte script shell:
#!/bin/sh vncserver :1 -geometry 1920x1080 -depth 24 -dpi 96 - Salve como
vnc.sh(por exemplo)
- Torne o arquivo executável:
chmod +x vnc.sh - Em seguida, você pode executá-lo a qualquer momento com:
./vnc.sh - Se preferir o ponteiro do mouse no cliente de VNC para aparecer como uma seta em oposição a um "x", que é padrão, no
/home/pi/.vnc/xstartupadicione o seguinte parâmetro paraxsetroot:
-cursor_name left_ptr
- Faça login em um terminal no Pi como root:
sudo su - Navegue até o diretório
/etc/init.d/:
cd /etc/init.d/ - Criar um novo arquivo aqui contendo o seguinte script:
#! /bin/sh # /etc/init.d/vncboot ### BEGIN INIT INFO # Provides: vncboot # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start VNC Server at boot time # Description: Start VNC Server at boot time. ### END INIT INFO USER=pi HOME=/home/pi export USER HOME case "$1" in start) echo "Starting VNC Server" #Insert your favoured settings for a VNC session su - $USER -c "/usr/bin/vncserver :1 -geometry 1280x800 -depth 16 -pixelformat rgb565" ;; stop) echo "Stopping VNC Server" /usr/bin/vncserver -kill :1 ;; *) echo "Usage: /etc/init.d/vncboot {start|stop}" exit 1 ;; esac exit 0 - Faça este arquivo executável:
chmod 755 vncboot - Ativar sequenciamento de inicialização baseada em dependência:
update-rc.d -f lightdm removeupdate-rc.d vncboot defaults - Se permitindo sequenciação de inicialização baseada em dependência era bem sucedido, você vai ver isso:
update-rc.d: using dependency based boot sequencing - Reinicie o seu Raspberry Pi e você deve encontrar um servidor VNC já começou.
Instalar Transmission CLI
Para Instalar:
sudo apt-get install transmission transmission-cli transmission-common transmission-daemon transmission-remote-cli
Editar os Parametros:
sudo vim settings.json em /etc/transmission-daemon/
{
"alt-speed-down": 50,
"alt-speed-enabled": false,
"alt-speed-time-begin": 540,
"alt-speed-time-day": 127,
"alt-speed-time-enabled": false,
"alt-speed-time-end": 1020,
"alt-speed-up": 50,
"bind-address-ipv4": "0.0.0.0",
"bind-address-ipv6": "::",
"blocklist-enabled": false,
"blocklist-url": "http://www.example.com/blocklist",
"cache-size-mb": 4,
"dht-enabled": true,
"download-dir": "/var/lib/transmission-daemon/downloads",
"download-limit": 100,
"download-limit-enabled": 0,
"download-queue-enabled": true,
"download-queue-size": 5,
"encryption": 1,
"idle-seeding-limit": 30,
"idle-seeding-limit-enabled": false,
"incomplete-dir": "/var/lib/transmission-daemon/Downloads",
"incomplete-dir-enabled": false,
"lpd-enabled": false,
"max-peers-global": 200,
"message-level": 1,
"peer-congestion-algorithm": "",
"peer-id-ttl-hours": 6,
"peer-limit-global": 200,
"peer-limit-per-torrent": 50,
"peer-port": 51413,
"peer-port-random-high": 65535,
"peer-port-random-low": 49152,
"peer-port-random-on-start": false,
"peer-socket-tos": "default",
"pex-enabled": true,
"port-forwarding-enabled": false,
"preallocation": 1,
"prefetch-enabled": 1,
"queue-stalled-enabled": true,
"queue-stalled-minutes": 30,
"ratio-limit": 2,
"ratio-limit-enabled": false,
"rename-partial-files": true,
"rpc-authentication-required": true,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-password": "{317de5a74a1f14ce8f4b4673757cd5c34c09d8d0KEE2x6WI",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "transmission",
"rpc-whitelist": "127.0.0.1",
"rpc-whitelist-enabled": true,
"scrape-paused-torrents-enabled": true,
"script-torrent-done-enabled": false,
"script-torrent-done-filename": "",
"seed-queue-enabled": false,
"seed-queue-size": 10,
"speed-limit-down": 100,
"speed-limit-down-enabled": false,
"speed-limit-up": 100,
"speed-limit-up-enabled": false,
"start-added-torrents": true,
"trash-original-torrent-files": false,
"umask": 18,
"upload-limit": 100,
"upload-limit-enabled": 0,
"upload-slots-per-torrent": 14,
"utp-enabled": true
}
O usuario e senha padrão é transmission.
sudo apt-get install transmission transmission-cli transmission-common transmission-daemon transmission-remote-cli
Editar os Parametros:
sudo vim settings.json em /etc/transmission-daemon/
{
"alt-speed-down": 50,
"alt-speed-enabled": false,
"alt-speed-time-begin": 540,
"alt-speed-time-day": 127,
"alt-speed-time-enabled": false,
"alt-speed-time-end": 1020,
"alt-speed-up": 50,
"bind-address-ipv4": "0.0.0.0",
"bind-address-ipv6": "::",
"blocklist-enabled": false,
"blocklist-url": "http://www.example.com/blocklist",
"cache-size-mb": 4,
"dht-enabled": true,
"download-dir": "/var/lib/transmission-daemon/downloads",
"download-limit": 100,
"download-limit-enabled": 0,
"download-queue-enabled": true,
"download-queue-size": 5,
"encryption": 1,
"idle-seeding-limit": 30,
"idle-seeding-limit-enabled": false,
"incomplete-dir": "/var/lib/transmission-daemon/Downloads",
"incomplete-dir-enabled": false,
"lpd-enabled": false,
"max-peers-global": 200,
"message-level": 1,
"peer-congestion-algorithm": "",
"peer-id-ttl-hours": 6,
"peer-limit-global": 200,
"peer-limit-per-torrent": 50,
"peer-port": 51413,
"peer-port-random-high": 65535,
"peer-port-random-low": 49152,
"peer-port-random-on-start": false,
"peer-socket-tos": "default",
"pex-enabled": true,
"port-forwarding-enabled": false,
"preallocation": 1,
"prefetch-enabled": 1,
"queue-stalled-enabled": true,
"queue-stalled-minutes": 30,
"ratio-limit": 2,
"ratio-limit-enabled": false,
"rename-partial-files": true,
"rpc-authentication-required": true,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-password": "{317de5a74a1f14ce8f4b4673757cd5c34c09d8d0KEE2x6WI",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "transmission",
"rpc-whitelist": "127.0.0.1",
"rpc-whitelist-enabled": true,
"scrape-paused-torrents-enabled": true,
"script-torrent-done-enabled": false,
"script-torrent-done-filename": "",
"seed-queue-enabled": false,
"seed-queue-size": 10,
"speed-limit-down": 100,
"speed-limit-down-enabled": false,
"speed-limit-up": 100,
"speed-limit-up-enabled": false,
"start-added-torrents": true,
"trash-original-torrent-files": false,
"umask": 18,
"upload-limit": 100,
"upload-limit-enabled": 0,
"upload-slots-per-torrent": 14,
"utp-enabled": true
}
O usuario e senha padrão é transmission.
20 comandos Linux que você talvez não conheça
1 – Armazenando arquivos e diretórios na memória RAM com tmpfs
mount -t tmpfs tmpfs /mnt -o size=1024m,mode=0755
Este comando cria uma partição temporária na memória RAM. Muito útil para quem precisa realizar operações que utilizam muito o disco, tais como: extração de texto e ordenação de arquivos. Assim, é bem mais prático você copiar esses arquivos para uma partição tmpfs, realizar as operações, e por fim, copiar o resultado final de volta para o disco.
Sendo assim, você diminuirá o tempo total das operações significantemente.
2 – Diretório de arquivos pelo navegador web
python -m SimpleHTTPServer
Por fim, acesse http://localhost:8000/
3 – Execute um comando sem salvar no ‘history’
comando
Simplesmente, dê um espaço antes de inserir qualquer comando no shell
4 – Crie um arquivo facilmente
> arquivo.txt
Crie um arquivo facilmente utilizando o ‘sinal maior que’ (>) precedendo ao nome e tipo de arquivo desejado
5 – Lista de partições amigável
mount | column -t
6 – Obtenha o IP público da sua rede
curl ifconfig.me
7 – O histórico de usuários que acessaram o sistema
last
8 – Abrir um arquivo/URL no programa padrão
xdg-open ARQUIVO
xdg-open URL
9 – Lista somente diretórios
ls -d */
10 – Aplicações usando conexões de internet no momento
Importante para saber quais programas usam a internet em segundo plano, por exemplo
lsof -P -i -n
Este comando, exibe somente o nome das aplicações:
lsof -P -i -n | cut -f 1 -d ” “| uniq | tail -n +2
11 – Criptografando seus arquivos facilmente
Encriptar:
gpg -c ARQUIVO
Decifrar:
gpg ARQUIVO.gpg
12 – Encontre o path/manual/binário de um comando
whereis COMANDO
13 – Crie um arquivo com tamanho determinado
dd if=/dev/zero of=teste_arquivo.txt bs=1M count=10
Neste exemplo é criado um arquivo ‘teste_arquivo.txt’ com tamanho de 10MB, preenchidos com bits ‘zero’
14 – Grave sua Área de Trabalho facilmente
Este é um recurso mais rápido,
contudo é recomendado que utilize softwares elaborados para este fim;
tais como: o gtk-recordmydesktop
ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/minha-area-trabalho.mpg
Para versões do Debian/Ubuntu, é recomendado o uso deste comando:
avconv -f x11grab -show_region 1 -video_size hd720 -framerate 24
-i :0.0 -threads 2 -q 1 -bt 8000000 -b 8500000 /tmp/minha-area-trabalho.avi
-i :0.0 -threads 2 -q 1 -bt 8000000 -b 8500000 /tmp/minha-area-trabalho.avi
15 – Apague os arquivos antigos
Cuidado na escolha do diretório. NUNCA escolha o raiz (/), pois irá apagar arquivos importantes do sistema!
find /tmp/ -type f -mtime +7 -exec rm -f {} ;
Neste exemplo, será apagado todos os arquivos, contidos na pasta tmp, que foram criados a mais de 7 dias.
16 – Dividindo arquivos gigantes em partes menores
Primeiro comprima o arquivo escolhido:
tar -cvvzf teste.tar.gz ARQUIVO
Depois, quebre o arquivos em vários tamanhos de 10MB (fica a seu critério):
split -b 10M teste.tar.gz partes_video
Por fim, para reagrupar novamente o arquivo:
cat partes_video * > teste_final.tar.gz
17 – Baixando o código HTML de um site
wget -O html.txt http://meusite.com
18 – Listando todos os comandos do seu sistema
compgen -c
Ou pesquise por um comando específico: compgen -c | grep find
19 – Descubra qual distribuição você está usando
lsb_release -a
20 – Listando detalhes de hardware do seu sistema
sudo lshw -short -html > info.txt && xdg-open info.txt
segunda-feira, 26 de outubro de 2015
TTYREC grava o que é digitado no terminal
O ttyrec é um pacote livre utilizado para gravar tudo que for feito no terminal como se fosse um arquivo de vídeo.
Objetivo
Explicar a instalação e o funcionamento do ttyrec para uso corporativo ou pessoal, fazendo com que tudo que for digitado no teclado seja capturado e enviado por e-mail, mantendo um histórico de cada usuário.
Ferramentas
Neste projeto iremos utilizar uma máquina virtual Debian 6 Squeeze com acesso a Internet. Caso tenha dificuldade de configurar uma máquina virtual, acesso o tutorial de criação de máquinas virtuais aqui no Mundo TI Brasil.
Configurando
Primeiro de tudo teremos que fazer login como superusuário (root) no Shell. Por questões de compatibilidade com este tutorial, recomendo executar os 2 comandos seguintes antes de realizar a instalação do pacote ttyrec.
# apt-get update
# apt-get upgrade
Após executar os 2 comando informados acima, execute o seguinte comando:
# apt-get install ttyrec
A figura a baixo exibe como proceder. Observe que toda instalação e configuração serão feitas como root.
Agora iremos realizar um teste para saber se esta tudo funcionando. Neste teste iremos apenas executar os comandos df, ls -l e pwd, seguido do comando clear.
Para fazer com que o ttyrec funcione, execute:
# ttyrec
Após digitar o comando acima e pressionar <enter>. O comando acima funciona como start. A partir daí tudo que for digitado será gravado.
Digite os seguintes comandos:
# ls -l
# pwd
# df
#clear
Para finalizar a gravação, execute o seguinte comando:
# exit
Ao executar o comando acima, note que nada mudou exceto que foi criado um arquivo na posição atual onde você se encontra chamado de:ttyrecord. Este arquivo contém todos os comandos digitados acima.
O comando exit executado no final funciona como stop por padrão ele cria o arquivo com as permissões de leitura para todos, sendo que somente o dono do arquivo possui permissão de gravação.
Agora iremos rodar a gravação. Para realizar esta etapa, execute o seguinte comando:
# ttyplay ttyrecord
Depois de alguns instantes, você veria tudo que foi feito.
Agora preste atenção na imagem a seguir. Realizei um teste onde irei criar arquivos e adicionar algum conteúdo dentro deles.
Analisando o 1º quadro, criei uma diretório chamado erick e um arquivo chamado martinez.
No 2º quadro, iniciamos a gravação e executamos alguns comandos e ao final foi executado o comando exit.
No 3º quadro, foi inicializado a gravação. Note que em momento algum, ele sobrescreve o arquivo original ou exibe uma mensagem de que já existe um arquivo com o nome.
O exemplo acima serviu para mostrar que não existe problema em executar o comando ttyplay.
Opções do comando ttyrec
Podemos utilizar algumas opções do comando, tais como:
-a
Anexar a saída para o arquivo ou ttyrecord, ao invés de substituí-lo.
-u
Com esta opção, ttyrec chama automaticamente uudecode e salva sua saída quando os dados uuencoded aparecer na sessão. Ele permitirá que você transfira arquivos de host remoto. Você pode chamar ttyrec com esta opção, acesse o host remoto e invocar uuencode com ele para o arquivo que você deseja transferir.
-e comando
Especificar um comando a ser monitorado. Por exemplo, podemos informar que queremos gravar somente a execução do comando rm.
Exemplo:
# ttyrec -e rm
-n
Mostram na tela todos os comandos executados. Não há interatividade, apenas mostra tudo que foi feito.
Exemplo:
# ttyplay -n ttyrecord
-s
Determinar a velocidade de reprodução do ttyrecord. Por padrão ele utiliza o valor 1, variando de 1 (mais lento) até 10 (rápido).
Exemplo:
# ttyplay -s2 ttyrecord
Se desejarmos manipular a velocidade de reprodução, poderemos utilizar as seguintes letras:
- S à Diminui a velocidade de reprodução.
- F à Aumenta a velocidade de reprodução.
Criando um histórico de acesso
Após o entendimento do ttyrec e ttyplay, vamos criar um diretório e dentro dele irá conter os arquivos de gravação, para mantermos um histórico de ações de cada usuário.
Como padrão de extensão irei utilizar o final .tty nos arquivos criados, assim saberemos que os arquivos de log dele, por exemplo: erick-08:50-09-05-2013.tty.
Para criar um histórico de acesso, execute as seguintes linhas:
Primeiro, iremos criar o diretório ttyrec dentro de /var/log/
# mkdir -m 777 /var/log/ttyrec
Agora iremos editar o arquivo /etc/profile, o qual será responsável por chamar o ttyrec, independente do usuário que for logar no sistema.
# vim /etc/profile
Entre em modo de edição (aperte a letra i do teclado) e na última linha do arquivo adicione as seguintes linhas da imagem 4 e salve as alterações (Aperte uma vez o ESC do teclado e em seguida ).
Estamos definindo nas linhas acima que quando o usuário log no sistema seja iniciado a gravação do que ele fizer e claro estou utilizando o comando date com as opções %H,%M,%d,%m%Y para criar um log de data.
Ao final, teremos um arquivo contendo o nome do usuário, a hora e minuto em que ele iniciou e a data. A imagem 5 mostra como irá ficar o formato do arquivo.
Toda vez que o usuário logar, será criado um novo arquivo de gravação. A imagem 6 mostra que o usuário root realizou logon no mesmo dia, mas em hora diferente e que o usuário erick também fez login no sistema.
Lembrando que para reproduzir a gravação, basta executar o comando ttyplay seguido do arquivo que deseja ver.
Agora a parte boa. Caso não estejamos na empresa, como teremos acesso a esses arquivos? Via SSH? Via FTP? Mas pare e pense, teremos que efetuar login para ter acesso a esses arquivos, então porque não configuramos para que de tempo em tempo ele envie um relatório para o nosso e-mail.
A próxima etapa deste tutorial será para configurar o crontab (Agendador de tarefas do Linux), para que seja enviado um e-mail ao final do dia com os logs de acesso de todos os usuários. Para isso acesse o seguinte link, onde irá explicar como você deve fazer para configurar o e-mail:
www.mundotibrasil.com.br/solucao-para-envio-de-email-de-forma-simples
www.mundotibrasil.com.br/solucao-para-envio-de-email-de-forma-simples
Sendo que iremos realizar algumas alterações do tipo:
Adicionar as seguintes linhas dentro do arquivo de configuração do ssmtp (/etc/ssmtp/ssmtp.conf):
AuthUser=seuemail@gmail.com
AuthPass=suasenha
AuthPass=suasenha
Conforme imagem 7.
Teremos que instalar o mpack (pacote adicional para que possamos enviar anexo) Caso não esteja instalado, execute a seguinte linha para quer você possa instalar.
# apt-get install mpack
Após a instalação vamos realizar um teste de envio de e-mail com anexo, logo execute os seguintes comandos:
# echo “Funcionou o anexo” > teste.txt
# mpack -s “Teste de envio de email” -a teste.txt martinezlinux@gmail.com
Claro que coloque seu e-mail. A opção -a serve para informar que será adicionado um anexo e o -s é o Assunto do e-mail.
Caso não funcione, verifique novamente todos os passos.
Criando um script para automatizar o envio das gravações
Nesta parte do tutorial, você irá criar um script e agendar no cron para que sejam enviados todos os dias as gravações. Claro que você pode configurar o envio de acordo com sua necessidade, como por exemplo: semana, mensal, trimestral, etc.
Primeiro, criar um arquivo dentro de /root/script/.
# mkdir /root/script
# vim /root/script/envgrav.sh
# chmod +x /root/script/envgrav.sh
Segundo, dentro do script terá que conter as seguintes linhas:
Na imagem 8, foram criados 4 variáveis, onde:
- NOME à O nome que terá o arquivo após ser compactado.
- LOG à Localização de onde estão os registros gravados.
- EMAIL à Endereço de e-mail que irá receber as gravações.
- ASS à Campo referente ao assunto.
Visão geral:
Após definir as variáveis, iremos compactar utilizando o comando tar depois disso será enviado o e-mail com o arquivo em anexo e em seguida deletar este arquivo compactado e os logs já cadastrados.
Caso deseje manter os históricos, basta comentar as linhas do rm.
Agora para automatizar isso tudo que fizemos, iremos utilizar o agendamento do Linux.
Primeiro, vamos editar o crontab:
# vim /etc/crontab
Dentro do arquivo, você irá definir a hora que será executada o script envgrav.sh, seguindo a seguinte lógica:
Minuto – Hora – Dia do Mês – Mês – Dia da semana – usuário – localização do script
Quando tiver *, significa que será feito sempre.
No exemplo acima, esta definido que as 23:59 de todos os dias referente a todos os meses durante as sextas feiras será executo o script.
Após realizar a edição salve o documento e por segurança reinicie o cron.
Execute o seguinte comando:
# service cron restart
Pronto, agora só ficar aguardando os logs.
Assinar:
Postagens (Atom)



