Esta es mi chuleta de comandos utiles para el día a día en la administración de sistemas. Casi todos son de Command Line Fu Por tenerlos organizado en algún sitio ordenados.
Ver si el procesador es de 32 o 64bits
lshw -C cpu
Actualizar Centos Fedora RedHat
yum clean all yum update glibc\* yum update yum\* rpm\* python\* yum clean all yum update kernel\* yum update shutdown -r now
Añadir una IP a una interface con ip
ip addr add 192.168.10.1/24 dev eth0
Añadir ceros al comienzo un nombre de fichero
zmv '().jpg' '${(l:3::0:)1}.jpg'
Ver bloques defectuosos en un dispositivo
badblocks -s -v -n -f /dev/sdb1 En mi caso, el disco duro “externo” esta en la dirección “/dev/sdb1";, la dirección en la que se encuentra el disco duro, puede variar. Los simbolos: -s, significa que nos muestra el proceso de escaneo del disco, mostrándonos los sectores ya comprobados. -v, modo verbose -n, nos pone en modo no destructivo, esto es que se recuperaran los sectores dañados y la informacion en el disco duro no sera dañada o eliminada. -f, repara los sectores dañados.
Buscar Archivos Duplicados
find . -type f -print0 | xargs -0 md5sum | sort | uniq -D --check-chars=32
Buscar Archivos Duplicados 2
fdupes
Buscar y Reemplazar en vi o vim
:g/texto_a_sustituir/s//texto_nuevo/g
Centos Build Essential (Alternativa a los build essential de Debian y derivados)
yum install gcc gcc-c++ kernel-devel
Conocer Label-UUID de Disco
blkid /dev/sdX
Conocer Mac activas en la LAN
nmap -sN 192.168.1.0-255
Convertir una imagen de Nero a ISO
$ dd bs=1k if=image.nrg of=image.iso skip=300
CountDown
watch -tn1 'date -u +%T -d @$(expr $(date -d HH:MM +%s) - $(date +%s)) | toilet -f bigmono12' Change HH:MM to your target time.
Mostrar progreso de DD
dd if=/dev/zero | pv | dd of=/dev/null
Descargas En Paralelo
En un fichero de texto escribimos nuestra lista con las url para descargar. Guardamos y desde terminal:
cat url.txt | xargs -n 1 -P 10 wget
Donde url.txt es la ruta con la lista de de direcciones a descargar.
Donde -n define que xargs solo tome en cuenta un argumento al tiempo
Donde -P define el numero de procesos en paralelo.
Eliminar Espacios
rename 'y/ /_/'
Encontrar IPs sin usar en una subnet
nmap -sP <subnet>.* | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' > results.txt ; for IP in {1..254} ; do echo "<subnet>.${IP}" ; done >> results.txt ; cat results.txt | sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 | uniq -u
Generate Random MAC
2>/dev/null dd if=/dev/urandom bs=1 count=6 | od -t x1 | sed '2d;s/^0\+ //;s/ /:/g'
GeoIP – ConexionesEstablecidad
for i in $(netstat --inet -n|grep ESTA|awk '{print $5}'|cut -d: -f1);do geoiplookup $i;done
Get External IP
# curl icanhazip.com # echo $(wget http://ipecho.net/plain -q -O -)
Get Random Sentence
$ wget randomfunfacts.com -O - 2>/dev/null | grep \<strong\> | sed "s;^.*\(.*\).*$;\1;"
Hard Disk Monitor
$ HDD=$(df | awk ' NR>3 (S=$5) (M=$6) { if (S>90) print "Your Systems "M" is """S" Full" } ') ; [[ $HDD ]] && echo "$HDD" | mail -s "Hard-Drives Full" TO@EMAIL.com -- -f FROM@EMAIL.com >/dev/null
List available upgrades from apt without upgrading the system
apt-get --just-print upgrade
List Installed Kernels
dpkg --get-selections | grep linux-image
Escanear con Nmap
nmap -T4 -A -v -PE -PS22,25,80 -PA21,23,80,3389 <target>
Pipe music over netcat with mpg123
#Client# cat "The Meters - People Say.mp3" | nc -vv 192.168.1.100 8080; #Server# nc -vv -l -s 192.168.1.100 -p 8080 | mpg123 -v - No he conseguido que funcione.
press Any Key To Continue
read -sn 1 -p "Press any key to continue..."
Really remove file from your drive
$ function rrm(){ for i in $*; do; if [ -f $i ]; then; echo "rrm - Processing $i"; shred --force --remove --zero --verbose $i; else; echo "Can't process $i"; type=$(stat "$1" -c %F); echo "File $i is $type"; fi; done;}
Reboot as a different OS in Grub
echo "savedefault --default=2 --once" | grub --batch; sudo reboot
Recursively remove all empty directories
$ find . -type d -empty -delete
Recursive search and replace old with new string, inside files
find . -type f -exec sed -i s/oldstring/newstring/g {} \;
Remote Screen Shoot
export DISPLAY=":0.0" && import -window root screenshot.png
Rsync
rsync -av -r -p -t -z ORIGEN DESTINO
Run command on a group of nodes
mussh -h host1 host2 host3 -c uptime
sed-Seek-Replace
sed -e 's/_/ /g'
Tamaño Subdirectorios
du -sh */
TrashFunction
function trash(){ if [ -z "$*" ] ; then echo "Usage: trash " else DATE=$( date +%F ) [ -d "${HOME}/.Trash/${DATE}" ] || mkdir -p ${HOME}/.Trash/${DATE} for FILE in $@ ; do mv ${FILE} ${HOME}/.Trash/${DATE} echo "${FILE} trashed!" done fi }
Crear Thumbs
for i in *; do NOMBRE=$(echo $i | cut -f1 -d.); EXT=$(echo $i | cut -f2 -d.); convert -resize 96x96 $i ${NOMBRE}_TH.$EXT; echo ${NOMBRE}_TH.$EXT; done
Time To Coffee
dialog --gauge "Installing..." 6 40 15
Carga del sistema
tload -s 10
Upload an image to Twitpic
$ curl -F "username=mytwiterlogin" -F "password=mytwitterpassword" -F "message=My image description" -F media=@"./image.png" http://twitpic.com/api/uploadAndPost
Who In The Lan
netdiscover -i eth1 -r 192.168.1.0/24 -s 0.5
Pequeño servidor con Python
$ python -m SimpleHTTPServer
Ver lista de paquetes instalados en Debian y derivados
# dpkg --get-selections
Administrar programas al inicio en Debian y derivados
# rcconf
Administrar programas al inicio en CentOS y derivados
# chkconfig
Programa para configurar la red en CentOS y derivados
# system-config-network-tui
Programa para configurar el firewall en CentOS y derivados
# system-config-firewall-tui
Ver conexiones
# ss -l -n
Sincronizar con un servidor NTP
# ntpdate 0.pool.ntp.org
Define a function combining history and grep to save typing 🙂
function hg () { history | grep $* ; }
Hits per hour apache log
awk -F: '{print $2}' access_log | sort | uniq -c
Clone perms and owner group from one file to another
for i in chmod chown; do sudo "$i" --reference=/home/user/copyfromfile /tmp/targetfile; done
Get HTTP status code with curl
$ curl --write-out %{http_code} --silent --output /dev/null localhost
How to get rid of ^M characters
Enter vim and open the file. Then enter this after hitting “:” (Without the quotes)
$ %s/\r//g
Read Squid logs with human-readable timestamp in Pfsense
$ tail -f /var/squid/logs/access.log | perl -pe 's/(\d+)/localtime($1)/e'
Volcado y recuperacion de una base de datos de MySQL
backup: # mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql restore:# mysql -u root -p[root_password] [database_name] < dumpfilename.sql
Recuperar la terminal cuando la sesión SSH se cuelga
Presionar intro, altgr+4, . (punto)
Crear un fichero de 100MB
dd if=/dev/zero of=bigfile bs=1024 count=102400
Descarga múltiple con wget
cat listaURL.txt | xargs -n 1 -P 10 wget
Guardar con vim cuando no tenemos permisos
:w !sudo tee %
Beep en la consola
echo -en "\007"
Cuenta atrás en Bash
minutos=XX secs=$(($minutos * 60)) while [ $secs -gt 0 ]; do echo -ne "$secs\033[0K\r" sleep 1 : $((secs--)) done