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
- -ne (not equal)
- -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
- Obtener el el “record size” de un archivo:
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
- Encontrar servidores “authoritative” para un dominio:
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