Table of Contents

sshfs

mount ssh

apt-get install sshfs

Montar para usuario normal

sshfs root@192.168.1.2:/media/2tb /mnt/2tb -o rw,noexec,nosuid,nodev,max_read=65536,allow_other

SFTP

Transferencia de un archivo desde hostA→hostB utiizando hostBridge como puente (puede no ser necesario; va bien “por si los firewalls”)

hostA> cat /path/to/local/file | ssh -2 -C user@hostBridge 'cat | ssh -2 -C user@hostB “cat>/path/to/remote/file”'

Si la transferencia es de Local → Remoto

local> cat /path/to/local/file | ssh -2 -C user@remoto “cat>/path/to/remote/file”

Si la transferencia es de Remoto → Local

local> ssh -2 -C user@remoto “cat /tmp/x” > /path/to/local/file

Enviar mensajes entre usuarios

write talk mesg wall who

Bucle

while true;do echo $i `netstat -an | grep 8889`;i=`expr $i + 1`;sleep 1;done

Mirar Hardware

dmidecode

lspci -v

Saber usuarios conectados

Who o finger

Redireccionar salidas a ficheros

Redirecciona la salida stderr (2) a stdout (1) y esta a un fichero:

ls -l jurjur >ls.out 2>&1

se puede redireccionar al vacio:

ls -l jurjur > dev/null 2>&1

Screen

Crear una ventana con un “titulo”:
#screen -S titulo

Recuperar sesión detachada por nombre :

screen -r titulo

Si está atachada, al poner -R mayúscula crea una nueva con el mismo nombre:

screen -R titulo

Recuperar sesion:
#screen -r

Para enviar comandos dentro de una sesión, pulsar ctrl+a y luego “:”

Cambiar titulo a una sesion activa:
:sessionname nuevo_titulo

Salir de la sesión en curso (sin cerrarla, ahí la gracia de screen):

CTRL + a + d

Multiusuario:

# sudo chmod +s /usr/bin/screen
# sudo chmod 755 /var/run/screen

Crear una sessió (amb el paràmetre -S li podem posar un nom més bonic)

# screen -S nomSessió

Definir-la como a multiusuari

Ctrl-a :multiuser on

Donar permisos a un usuari per veure la sessió

Ctrl-a :acladd usuari

Per evitar que l’altre usuari pugui editar

Ctrl-a :aclchg usuari -w "#"

L’altre usuari es pot connectar amb la següent comanda:

# screen -x usuariAmbScreen/nomSessió

Hacer Scroll

Con screen no nos podemos hacer scroll en la ventana, con la rueda del ratón por ejemplo.

Se hace pulsando ctrl+a, luego esc y nos movemos con los cursores como si fuera un fichero de texto

Eliminar pitido shell

#xset -b

Montar ISO

#mount -o loop -t iso9660 fichero.iso /mnt/iso

GREP

[[:alpha:]] is the same as [a-zA-Z]
[[:upper:]] is the same as [A-Z]
[[:lower:]] is the same as [a-z]
[[:digit:]] is the same as [0-9]
[[:alnum:]] is the same as [0-9a-zA-Z]
[[:space:]] matches any white space including tabs

Para ignorar un caso:

# nslookup wiki.legido.com | grep Address |  awk '{print $2}'
192.168.1.3#53
87.221.36.185

Queremos quitar la linea de la “#” se hace con -v:

# nslookup wiki.legido.com | grep Address |  awk '{print $2}' | grep -v "#"
87.221.36.185

Tema 64 bits:

* Para comprovar si una CPU es de 64 bits, se puede ejecutar en un terminal:

grep ' lm ' /proc/cpuinfo

(si no aparece nada, sólo es de 32 bits)

* Para comprovar si la CPU tiene extensiones “V”, se puede ejecutar en un terminal:

egrep '(vmx|svm)' --color=always /proc/cpuinfo

(si no aparece nada, pues nada de nada).

* Múltiples coincidencias:

grep -E 'hola|como|estas' fichero.txt
egrep '(hola|como|estas)' fichero.txt

* Poner color grep grepcolor. Lo ponemos en el /etc/profile para todos usuarios

  alias grep='grep --color=auto'

Sintaxis bash

http://www.tldp.org/LDP/abs/html/

* Para sortear caracteres especiales:

mv -- \-mi\ fichero.rar /ruta/destino/

** Condiciones

  1. -ne (not equal)
  2. -eq (equal)

Rastrear una red

nmap redes rastrear scan

* Para ver las máquinas que hay en un segmento de red determinado:

nmap -sP 192.168.1.0/24

Uniq y sort

sort -n xferfaxlog.seguro > xferfaxlog.ordenado
uniq xferfaxlog.ordenado xferfaxlog.unico

Puertos

Listar los puertos que están abiertos:

nmap -sT -O localhost

Listar el proceso que está okupando un puerto:

sudo lsof -ni :5666

Personalizar shell

En el fichero .bashrc de home:

export PS1='\e[0;31m\u@\h:\w\$ '

Tabla de colores (con 1; para claros):

Black 0;30
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33

Número de filas o columnas:

Podemos utilizar el comando resize que mira cuantas filas y columnas tenemos en pantalla y realiza:

# resize
COLUMNS=171;
LINES=60;
export COLUMNS LINES;

O ponerlas a mano:

# stty rows 60
# stty cols 171

Copiar

Copiar *.pdf de una estructura con directorios y subdirectorios a un solo directorio:

mkdir /destion && find /origen/ -iname '*.pdf' -exec cp {} /destino/ \;

Tráfico de una interfaz

Listamos paquetes y bytes de la interfaz eth0:

awk -F'[: ]*' '/eth0/{print $3"\n"$11}' < /proc/net/dev

Añadir ruta a $PATH

PATH+=nueva_ruta

O también:

export PATH=$PATH:nueva_ruta

Sustituír todas las ocurrencias de una cadena en un directorio

Da errores, pero furrula:

find . -exec perl -pi -w -e 's/texto_a_sustituir/texto_nuevo/g;' '{}' \; -print

Compilar

Dos paquetes interesantes:

build-essential
module-assistant

Comparar archivos

comm --nocheck-order -23 archivo1 archivo2

Shared libraries

If you see a message like:

error while loading shared libraries: libzmq.so.1

Then try rebuilding the dynamic linking cache with sudo ldconfig prior to building pyzmq.

History

Introducir fecha y hora en el comando “history”:

echo 'export HISTTIMEFORMAT="%d/%m/%Y %H:%M:%S "' >> ~/.bash_profile
exit

Al volver a entrar ya deberia aparecer al ejecutar:

history

No incluir en comando “history” aquellos que comiencen por un espacio:

echo 'export HISTTIMEFORMAT=ignorespace >> ~/.bash_profile
exit

Historía infinita sin límite de entradas. Suele venir limitado y no ves los comandos de hace muuuucho tiempo

HISTSIZE=-1
HISTFILESIZE=-1

Archivos

awk '{print length;exit}' 01.out 
37

Abrir correos formato .eml

mv correo.eml correo.mht
chromium correo.mht

Determinar si puerto de red cableado

Listar interfaces:

ifconfig -a | grep "Link encap"

Ver si la boca esta cableada:

ethtool p1p3 | grep "Link detected"

Listar bibliotecas requeridas por un ejecutable

sudo objdump -x adb | grep NEEDED

  NEEDED               librt.so.1
  NEEDED               libdl.so.2
  NEEDED               libpthread.so.0
  NEEDED               libstdc++.so.6
  NEEDED               libm.so.6
  NEEDED               libgcc_s.so.1
  NEEDED               libc.so.6

Listar bibliotecas compartidas requeridas

 ldd /usr/local/sbin/zabbix_server
	linux-vdso.so.1 =>  (0x00007fffde3ff000)
	libmysqlclient.so.18 => /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 (0x00007fa3c566c000)
	libnetsnmp.so.15 => not found
	libcurl.so.4 => /usr/lib/x86_64-linux-gnu/libcurl.so.4 (0x00007fa3c5404000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa3c50fe000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa3c4efa000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fa3c4cf1000)
	libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fa3c4ad6000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa3c4711000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa3c44f7000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa3c42d9000)
	libidn.so.11 => /usr/lib/x86_64-linux-gnu/libidn.so.11 (0x00007fa3c40a6000)
	librtmp.so.0 => /usr/lib/x86_64-linux-gnu/librtmp.so.0 (0x00007fa3c3e8b000)
	libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007fa3c3c2d000)
	libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fa3c3853000)
	libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fa3c360c000)
	liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007fa3c33fd000)
	libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007fa3c31ac000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fa3c5bac000)
	libgnutls.so.26 => /usr/lib/x86_64-linux-gnu/libgnutls.so.26 (0x00007fa3c2eed000)
	libgcrypt.so.11 => /lib/x86_64-linux-gnu/libgcrypt.so.11 (0x00007fa3c2c6e000)
	libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fa3c29a2000)
	libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fa3c2773000)
	libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fa3c256f000)
	libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fa3c2363000)
	libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007fa3c2148000)
	libgssapi.so.3 => /usr/lib/x86_64-linux-gnu/libgssapi.so.3 (0x00007fa3c1f0a000)
	libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007fa3c1cf5000)
	libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007fa3c1ab3000)
	libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007fa3c18ae000)
	libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fa3c16a9000)
	libheimntlm.so.0 => /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 (0x00007fa3c14a0000)
	libkrb5.so.26 => /usr/lib/x86_64-linux-gnu/libkrb5.so.26 (0x00007fa3c1217000)
	libasn1.so.8 => /usr/lib/x86_64-linux-gnu/libasn1.so.8 (0x00007fa3c0f76000)
	libhcrypto.so.4 => /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 (0x00007fa3c0d43000)
	libroken.so.18 => /usr/lib/x86_64-linux-gnu/libroken.so.18 (0x00007fa3c0b2d000)
	libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007fa3c0925000)
	libwind.so.0 => /usr/lib/x86_64-linux-gnu/libwind.so.0 (0x00007fa3c06fb000)
	libheimbase.so.1 => /usr/lib/x86_64-linux-gnu/libheimbase.so.1 (0x00007fa3c04ed000)
	libhx509.so.5 => /usr/lib/x86_64-linux-gnu/libhx509.so.5 (0x00007fa3c02a4000)
	libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007fa3bffea000)
	libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fa3bfdb1000)

Comandos relacionados con DNS

dig +short NS stackoverflow.com

o:

dig +nssearch stackoverflow.com

Generar una cadena de texto con el contenido de un archivo

Encriptar:

cat .ssh/id_rsa| base64 -w 0 

Desencriptar:

cat .ssh/id_rsa| base64 -w 0 | base64 -d