Sistemas‎ > ‎Linux‎ > ‎

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/


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

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

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

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

# 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

umount /mnt
umount -l /mnt
umount -f /mnt
fuser -km /mnt

# vi /etc/fstab
# mount -a

Verificar DNS

# dig ANY silviogarbes.com.br
nslookup silviogarbes.com.br
# host 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:].]\+"

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


Comments