Encontrar shells r57 y c99 oculta en el servidor

Aqui os dejo estas pequeñas lineas de comandos en linux para encontrar las shells r57 y c99 en nuestro servidor.

Estos comandos lo que hace es buscar con el comando find en el directory que le digamos y en el tipo de extension que querramos, y con xargs busca dentro del contenido del archivo la palabra r57 o c99 segun le indiquemos, y con awk nos muestra la ruta completa del archivo que contiene r57 y c99, en estos casos nos muestra rm -rf que es el comando para borrar cualquier archivo o carpeta sin preguntar, no recomiendo usar rm -rf sin antes examinar el contenido de los archivos personalmente, vaya a ser que la caguemos.

Para buscar la shell r57 en php

find /var/www/  -name "*".php  -type f -print0  | xargs -0 grep r57 | uniq -c  | sort -u  | cut -d":" -f1  | awk '{print "rm -rf " $2}' | uniq

Para buscar la shell r57 en txt

find /var/www/  -name "*".txt  -type f -print0  | xargs -0 grep r57 | uniq -c  | sort -u  | cut -d":" -f1  | awk '{print "rm -rf " $2}' | uniq

Para buscar la shell r57 en gif

find /var/www/  -name "*".gif  -type f -print0  | xargs -0 grep r57 | uniq -c  | sort -u  | cut -d":" -f1  | awk '{print "rm -rf " $2}' | uniq

Para buscar la shell c99 en php

find /var/www/  -name "*".php  -type f -print0  | xargs -0 grep c99 | uniq -c  | sort -u  | cut -d":" -f1  | awk '{print "rm -rf " $2}' | uniq

Para buscar la shell c99 en jpg

find /var/www/  -name "*".jpg  -type f -print0  | xargs -0 grep c99 | uniq -c  | sort -u  | cut -d":" -f1  | awk '{print "rm -rf " $2}' | uniq

Para buscar la shell c99 en gif

find /var/www/  -name "*".gif  -type f -print0  | xargs -0 grep c99 | uniq -c  | sort -u  | cut -d":" -f1  | awk '{print "rm -rf " $2}' | uniq

Si teneis alguna pregunta hacerla¡¡¡¡¡ no os calleis, que callarse y quedarse con dudas es de tontos¡¡¡

Buscar y reemplazar texto en todos los archivos dentro de un directorio y todos los subdirectorios – TIP Linux

Si buscabas como reemplazar texto dentro de varios archivos en una sola linea de comando, has llegado a la web correcta. Muchas veces tenemos que buscar o hacer cambios a un texto determinado y para empezar no sabemos ni en cual archivo, documento o directorio puede estar.

Digamos que le cambiamos la dirección IP al servidor, o cambiamos de servidor web y es necesario hacer los cambios en todos los archivos de configuracion y los donde aparezca la IP del servidor anterior.

Para no estar buscando durante horas entre todos los archivos de nuestro servidor, les escribo aqui los distintos tips para reemplazar strings alfanumericos en linux.

  • Para reemplazar un texto o string cada vez que aparezca en los archivos:

~# find /path/directorio «*.txt» | xargs perl -pi -e ‘s/texto/reemplazo/g’

  • Para reemplazar la primera vez que aparezca el texto:

~# find /path/directorio «*.txt» | xargs perl -pi -e ‘s/texto/reemplazo/’

  • Para reemplazar todos los archivos dentro de un directorio:

~# for arg in `ls -C1`; do perl -pi -e ‘s/texto/reemplazo/g’; done;

Existe infinidad de combinaciones posibles utilizando el shell de la linea de comandos. Tomemos como ejemplo la primera busqueda:

~# for arg in `find /your/home/dir -name «*.txt»` ; do perl -pi -e ‘s/texto/reemplazo/g’ $arg; done;

Muchas veces solamente es necesario buscar un path o una cadena dentro de multitud de ficheros sobre todo en las migraciones, para ello usaremos los siguientes comandos:

grep Busca cadenas dentro de ficheros»» -n señala el nº de la linea donde está la cadena

Ejemplo: grep -n micadena *

Busqueda recursiva de una cadena dentro de multitud de ficheros:

grep -n micadena * -R

Contar peticiones/request por IP de un access_log de Apache en bash

Aqui os dejo una pequeña linea en bash para contar la cantidad de requests por IP en un access_log de Apache.

cat /var/log/httpd/access_log |awk '{print($1)}'|sort |uniq -c |sort

Aqui la explicacion de como funciona:
Lo primero que hacemos es abrir el archivo con cat, el contenido se pasa a awk con el cual obtenemos la primera columna (lo mismo lo podríamos hacer con cut, pero estoy más acostumbrado a awk). Eso nos devuelve la lista de las IPs. Eso lo pasamos a sort que ordena las IPs antes de poder pasarselo a uniq. Éste último comando, con el parámetro -c se ocupa de contar las líneas repetidas en un listado ordenado (por eso el sort anterior). Y por último le volvemos a pasar todo a sort para que lo ordene en forma ascendente de acuerdo a la cantidad de ocurrencias de cada IP.

Hacer backup del MBR en Linux desde la shell

Escribimos en una ventana de la shell, con el usuario root:

dd if=/dev/hda of=/home/usuario/backupMBR bs=512 count=1

Por supuesto, un backup no vale de nada si no se puede restaurar, para ello, arrancamos desde un Live CD (u otro medio) y escribimos:

dd if=/dev/sda/backupMBR of=/dev/hda bs=512 count=1

Siendo en estos casos:

  • hda: la unidad que corresponda.
  • sda: la unidad que corresponda.
  • backupMBR: El nombre del fichero donde almacenamos el backup.
  • if (input file): Especificamos el fichero de origen. Si este parámetro no se define se toma el stdin por defecto.
  • of (output file): Especificamos el fichero destino. Si este parámetro no se define se toma el stdout por defecto.
  • bs (block size): Especifica el tamaño del bloque, en bytes.
  • count (number of blocks): Especifica el numero de bloques del archivo a crear

Como clonar un disco duro desde consola

Pues es fácil amigos, para clonar un disco duro desde la consola se usa solamente el comando dd
Por ejemplo quiero clonar el disco duro que esta montado en /dev/hda y me quiero hacer un clonado en /dev/hdb , todo esto ser haria asi:

dd if=/dev/hda of=/dev/hdb