Comandos básicos Linux
Conexão SSH
$ ssh usuario@192.168.0.1
// Compactada e transfere imagem
$ ssh usuario@192.168.0.1 -C -Y
Enviar arquivo via SSH
// scp arquivo_origem usuario@host:destino
$ scp arquivo.tar.gz usuario@servidor:/home/destino
Conexão SSH passando a senha na linha de comando
No arquivo "/etc/ssh/ssh_config" altere a linha:
De:
# StrictHostKeyChecking ask
Para:
StrictHostKeyChecking no
Instale o programa sshpass
Exemplos de uso:
// Isso fará o login automático como root no ip 10.0.0.1 usando a senha "senha".
# sshpass -p "senha" ssh root@10.0.0.1
// Copia a pasta "arquivos" do /home da minha máquina para o /home do ip 10.0.0.1. Obrigado pela ajuda fornecida.
# sshpass -p "senha" scp -r /home/arquivos/ 10.0.0.1:/home/
SSH - Autenticação via chave pública
Máquina Cliente
# ssh-keygen -t rsa
Isto gerara um arquivo chamado id_rsa e id_rsa.pub
Máquina Servidor
# vi $HOME/.ssh/authorized_keys
# cat id_rsa.pub >> $HOME/.ssh/authorized_keys
Agora da máquina cliente faz um ssh no servidor
Mudar prioridade de um processo
// renice prioridade -u usuario (-20 equivale a prioridade máxima)
# renice -20 -u squid
Visualizar log
$ tail -f /var/log/messages
$ zcat /var/log/messages.log.1.gz | grep palavra
ou
$ multitail /var/log/messages /var/log/auth.log /var/log/mail.log
Listar arquivos e diretorios
// lista arquivos ocultos
$ ls -a
// lista dono e permissão
$ ls -l
// lista SELinux
$ ls -Z
Visualiza utilização das partições
$ df -h
Visualiza partições
# fdisk -l
Correção no disco
# fsck -c -v -y /dev/sda1
(-c = corrige, -v = verbose, -y = by yes)
Shutdown ou Reboot sem executar o fsck
# shutdown -hf now
# shutdown -rf now
Exibir unidades mapeadas
# more /etc/fstab
# more /etc/mtab
Link simbólico e hardlink
Criando um link simbólico chamado "emulador" para o diretório /home/roberto/download/emulador_n64/:
$ ln -s /home/roberto/download/emulador_n64/ emulador
Criando um hardlink chamado "texto.txt" apontando para o arquivo "alvo_hardlink.txt":
$ ln alvo_hardlink.txt texto.txt
Criar arquivo em branco
$ touch arquivo.txt
Visualizar processos
$ top
$ htop
Visualizar id de um processo
$ ps -aux | grep firefox
Finalizar um processo
// kill -9 proc1 proc2 proc3 ...
# kill -9 1425 24156
Finalizar vários processos
#killall nomeprocesso
Exibe caracteres ocultos de um arquivo
$ cat -v /etc/dhcp3/dhcpd.conf
$ od -c /etc/dhcp3/dhcpd.conf
Visualizar tamanho de um diretorio
$ du -hs *
Lista diretórios e subdiretórios ordenados do maior para o menor
$ du -sk * | sort -nr | more
$ du -Sk * | sort -nr |more
Visualizar arquivos alterados em menos de 60 minutos
# find /dev -cmin -60
Pesquisar arquivo em subpastas
# cd /
# find . -name "arquivo.php"
Pesquisando arquivos pelo seu conteúdo
// Todos arquivos abaixo do diretorio atual
# find ./ | xargs grep -s -a -i "palavra chave" | cut -d : -f 1 | uniq
# find ./ | xargs grep -s -a -i "palavra chave" | uniq
# grep -lir "palavra chave" /tmp
# fgrep -r -a -i "palavra chave" *
// Todos arquivos com nome "nome do arquivo" abaixo do diretorio atual
# find ./ | grep "nome do arquivo" | xargs grep -s -a -i "palavra chave" | cut -d : -f 1 | uniq
Apagar arquivos antigos
(mtime = arquivos modificados
+2 = a mais de 2 dias)
# find ./ -mtime +2 -exec rm -rf {}\;
( Desse modo, ele irá apagar os diretórios que não são acessados a mais de 5 dias.)
#find /dir/bkps -type d -mtime +5 -exec rm -rf {} \;
(cmin = tempo em minutos)
# find ./ -cmin +120 -exec rm -rf {} +
Apagar arquivos antigos mas manter uma quantidade de arquivos
( Irá deixar somente 100 arquivos recentes no diretório, os outros serão apagados)
ls -td1 /home/diretorio/* | sed -e '1,100d' | xargs -d '\n' rm -rif
Protegendo arquivo
// Lista proteção
# lsattr arquivo.txt
// Protege arquivo
# chattr +i arquivo.txt
// Desprotege arquivo
# chattr -i arquivo.txt
Retirar comentários de um arquivo
$ egrep -v "^#|^$" [arquivo.conf_original] > [arquivo.conf_descomentado]
Retirar parte de uma linha tabulada
$ ps aux | awk '{ print $1}'
$ ps aux | cut -f 1 -d '.'
Filtrar resultado
$ ps aux | grep cups
$ ps aux | egrep "cups|tty"
Visualizar memória
$ free
# free -m
# more /proc/meminfo
Informações do Hardware
# dmidecode
Bios
# dmidecode -t 2
Memoria
# dmidecode -t 16
# dmidecode -t 17
Visualizar versão do kernel
$ uname -a
Visualizar versão do Sistema operacional
$ more /etc/issue
$ cat /etc/redhat-release
$ lsb_release -a
$ echo $(lsb_release -is) $(lsb_release -cs) $(lsb_release -rs)
Visualizar nome do processador
# more /proc/cpuinfo
Exibir flags suportadas pelo processador
$ echo "flags do seu processador:" $(grep flags /proc/cpuinfo | cut -f 2 -d ':')
Alterar data e hora
# date MMDDhhmmYYYY
# clock -w
Verificar data e hora do SO e Hardware
# hwclock --show ; date ; date -u
Criar rota default
# route add default gw 10.0.0.1
Adicionar rota
# route add -net 192.168.1.0 netmask 255.255.255.0 gw 172.16.1.1
# route add -net dynupdate.no-ip.com netmask 255.255.255.255 dev ppp0
Verificar se o host responde ping
$ ping 192.168.0.1
Verificar a rota até o host
$ tracert 192.168.0.1
ou
$ mtr 192.168.0.1
Redirecionar conexões com REDIR
# redir --laddr xxx.xxx.xxx.xxx --lport 3389 --caddr yyy.yyy.yyy.yyy --cport 3389
onde:
xxx.xxx.xxx.xxx é o ip da máquina linux
yyy.yyy.yyy.yyy é o ip da máquina windows
Exemplo:
# redir --laddr 200.255.10.10 --lport 3389 --caddr 192.168.1.1 --cport 3389
Para colocar em execução em background adicione & ao final do comando:
# redir --laddr 200.255.10.10 --lport 3389 --caddr 192.168.1.1 --cport 3389 &
Redirecionar SMTP
# /usr/sbin/redir --lport=25 --laddr=192.168.1.1 --caddr=192.168.1.2 --cport=25 &
# /usr/sbin/redir --lport=465 --laddr=192.168.1.1 --caddr=192.168.1.2 --cport=465 &
# /usr/sbin/redir --lport=587 --laddr=192.168.1.1 --caddr=192.168.1.2 --cport=587 &
Redirecionar conexões com REDIR
# vim /etc/rinetd.conf
E adicionar uma linha seguindo:
seuip porta-local ip-remoto porta-remota
Onde "seuip" é igual ao seu ip de internet e "porta-local" é a porta do serviço.
"ip-remoto" é o ip para onde vai ser jogada a conexão na porta remota.
Verificar conectividade da placa de rede
# mii-tool
# mii-tool eth0
# ethtool eth0
Verificar informações de rede
# ifconfig
# ifconfig -a
# ifconfig eth0:1 up
# ifconfig eth0:1 down
# ip addr show
# more /etc/udev/rules.d/70-persistent-net.rules
# more /etc/sysconfig/network-scripts/ifcfg-eth0
# ip link
# nmcli connection
# nmcli connection modify eno16780032 connection.interface-name ens192
# nmcli connection up eno16780032
# nmcli connection modify eno16780032 connection.id ens192
# udevadm info /sys/class/net/eno16780032
Verificar estatísticas de rede
# iptraf
# tcpdump
# pktstat -nt -w 3 -i eth0
# Analisar pacotes DHCP
# tcpdump -lenv -s 1500 port bootps or port bootpc -i eth0
# tcpdump -i ens224 port 67 or port 68 -e -n
# Exemplos tcpdump
# tcpdump -i eth0
# tcpdump -i eth0 src host 192.168.0.9
# tcpdump -i eth0 dst host 192.168.0.1
# tcpdump -i eth0 not host 192.168.0.9
# tcpdump -i eth0 dst port 80
# tcpdump -i eth0 src port 32881
# tcpdump -i eth0 dst 192.168.210.201 -nn
# tcpdump -i eth0 src 192.168.210.201 and dst 192.168.210.5 -nn
# tcpdump -i eth0 src host 201.32.108.12 or src host 186.249.6.98 -nn
# tcpdump -i eth0 src 192.168.210.201 and dst 192.168.210.5 and not port 22 -nn
# tcpdump -i eth0 host 192.168.210.201 -nn
# tcpdump -i eth0 src 192.168.210.201 and dst 192.168.210.5 and not port 22 -nn -w log_tcpdump
# tcpdump -i eth0 dst port 80 or dst port 443 and src net 192.168.0.0/16 -nn
# tcpdump port 80
# tcpdump icmp
# tcpdump net 1.2.3.0/24
Verificar estatísticas
# vmstat
# iostat
# ifstat
# dstat
Verificar portas abertas
Portas Abertas
# netstat -ntlp
Portas Estabelecidas
# netstat -ntp
# lsof -nPi tcp
# lsof -nPi udp
Verificar utilização de IO
# yum install python python-ctypes
# yum install iotop
# iotop
# iotop -o
# atop 1 (https://www.atoptool.nl/downloadatop.php)
# iostat -m 5 -d /home/ricardo
# dstat -cd –disk-util –disk-tps
# ioping -c 10 /dev/sda
# while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done
Habilitar serviços na inicialização
# chkconfig --add redmine
# chkconfig --level 235 redmine on
# chkconfig --list | grep redmine
# ntsysv
# systemctl list-unit-files
Desmontar partição
# cat /proc/mounts
# umount /mnt
# umount -l /mnt
# umount -f /mnt
# fuser -km /mnt
# vi /etc/fstab
# mount -a
Listar clientes nfs
# netstat | grep :nfs
# netstat -a | grep nfs
# ss -a | grep nfs
Verificar DNS
# dig ANY silviogarbes.com.br
# nslookup silviogarbes.com.br
# host silviogarbes.com.br
# dig +short A silviogarbes.com.br
# dig -x 216.239.32.21
# dig ANY -x 216.239.32.21
# nslookup 216.239.32.21
# host 216.239.32.21
# dig @8.8.8.8 silviogarbes.com.br
# dig @8.8.8.8 -x 216.239.32.21
Obter IP Público
# curl icanhazip.com
# curl ifconfig.me
# dig +short myip.opendns.com @resolver1.opendns.com
# curl ip.appspot.com
# curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+"
# curl checkip.amazonaws.com
Testar velocidade link
# wget --no-check-certificate -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest_cli.py
# chmod +x speedtest-cli
# ./speedtest-cli
Extrair texto ASCII de arquivo binário
# strings < unknown.dat > ascii-from-unknown.txt
Remover linha duplicada de arquivo
# sort arqtexto.txt | uniq > arqnovo.txt
Assistindo o outro terminal / Executar comando em outro tty
Método 1
Transmissor
# screen
Receptor
# screen -ls
# screen -xr 31963
-----------
Método 2
Transmissor
# w
13:29:05 up 2:22, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 mail.dominio- 13:11 0.00s 0.11s 0.02s w (transmissor)
root pts/1 10.0.0.1 13:29 4.00s 0.05s 0.05s -bash (receptor)
# script | tee /dev/pts/1
-----------
Metodo 3
$ echo "<frase>" > /dev/pts/1
-----------
Método 4
$ ssh <user>@<host> "<comando> > /dev/pts/<numero>"
ou
$ ssh <user>@<host> "<comando> > /dev/tty<numero>"