====== 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 ====== 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. ====== Varios ====== 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 Poner color grep grepcolor. Lo ponemos en el /etc/profile para todos usuarios alias grep='grep --color=auto' ====== 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