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:

  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>"