BASH compilacion de mini-scripts


BASH es la shell de preferencia, que por default se usa en Linuxes (quizas la mas frecuente), aqui presento algunos mini-scripts que he recopilado al paso del tiempo, algunos bastante interezantes, otros sin sentido, y otros simplemente tontos, una parte de ellos han sido copiados de paginas, irc.

La primera linea es un comentario, como haz de saber los comentarios comienzan con un #, enseguida el codigo, algunos de ellos muentran 2 o mas variaciones de lo mismo.

Indiscutiblemente como casi todos los sistemas operativos tipo *nixes, esta no es ni sera la unica forma de hacerlo, pueden existir miles variaciones de la misma idea, te invito que comentes como las podrias mejorar, simplificar, etc.

# Si aun no estan definidas, define Enviromental variables
: ${HOSTNAME?} ${USER?} ${HOME?} ${PATH}

# Lista Authores y Correo Electronico
# de programas en /usr/bin (este pruede ser cambiado).
# Todavia sale basura en algunas lineas, alguna sugerencia
# de como mejorarlo?
for file in $( find /usr/bin/ -type f -name '*' | sort );do strings -f $file | sed -e "s%/usr/bin/%%" | grep @| grep ""|grep -e "[a-Z0-9\:][_-9a-Z]@[0-9a-Z].[a-Z]"; done

# lista todos los usuarios
for name in $(awk 'BEGIN{FS=":"}{print $1}' < "/etc/passwd" ) ; do echo -n "$name "; done;echo

# Lista todos los usuarios y asignalo a una variable.
lista_usuarios=$(for name in $(awk 'BEGIN{FS=":"}{print $1}' < "/etc/passwd" ) ; do echo -n "$name "; done);echo $lista_usuarios

# Buscando una cadena en un archivo binario.
for i in $( strings "/bin/ls" | grep "mem" ) ; do echo $i; done
for i in $( strings "/bin/ls" | grep "mem" | tr -s "$IFS" '[\n*]') ; do echo $i ; done

# Un ls mas bello.
ls -al | awk '{ print $1, "(" $5 " letras)",n,$8}'

# Un alias a ls tonto que finge toos los archivos son .exe (estas en windows o que?)
alias ls='for i in $(ls${*%.*c}); do echo "${i%.*c}.exe";done'

# Un alias a ls con listado simplificado.
alias ls='echo $(ls${*%.*c})'

#devuelveme mi alias a ls!
alias ls=/bin/ls
alias ls=ls
alias ls=`which ls -al` #que pasa si haces esto?
alias ls='`which ls` -al'
alias ls='$(which ls) -al'

# Renombra archivos *.DOC por *.doc
for i in $(ls *.DOC); do mv -f $i ${i%.DOC}.doc; done

# crea una contrase~a aleatoria
passwordtmp=$(echo $RANDOM | md5sum | md5sum) ; password=$(echo "${passwordtmp:2:9}");echo $password

# Crea una contrase~a aleatoria y asignala como nueva passwd
# Posiblemente no trabajara en tu version de passwd
passwordtmp=$(echo $RANDOM | md5sum | md5sum) ; password=$(echo “${passwordtmp:2:9}”);echo “$password” | passwd –stdin “$USER”;echo “USER: $user Password: $password”

# lista “broken links” en $HOME
find "$HOME" -type l -print0|xargs -r0 file|grep "broken symbolic"|sed -e 's/^\|: *broken symbolic.*$/"/g'

# Otras formas de listar archivos.
`which ls` $PWD/*
for i in $PWD/*; do echo $i; done
/bin/ls -al $PWD/*
ls | xargs -n 8
(printf "Permisos Enlaces Usuario Grupo Bytes Fecha Hora Archivo\n" 7 ; ls -al | sed 1d) | column -t
vdir -a
getfacl *

# Mostrar contenido de los /etc
/bin/cat /etc/* | more
more /etc/*

# Mueve (mv) usando cpio Directorio1 a directorio2
find "directorio1" -depth | cpio -admvp "directorio2"

# Cual es mi IP externa
echo `lynx -dump http://www.whatismyip.com.au | grep Your | cut -f 2 -d :`- | tr -d '-'
ip=$(echo `lynx -dump http://www.whatismyip.com.au | grep Your | cut -f 2 -d :`- | tr -d '-');echo $ip

# Hazme un nmblookup
nmblookup -A `lynx -dump http://www.whatismyip.com.au | grep Your | cut -f 2 -d :`

# Que google?
echo $(dig http://www.google.com | grep "ANSWER SECTION" -A 1 | grep IN | tr '\t' ' ')
lynx -dump "www.google.com" | sed -n '/^References$/,$p' | grep -E '[[:digit:]]+\.' | awk '{print $2}' | cut -d\? -f1 | eval grep \"^$basedomain\" | sed \"s|$basedomain||g\" | sort | uniq

# Descarga fotos de un index
for i in `lynx -dump http://www.adamandevedoll.com/adamandevedolls/pic/1387-lesbian-22/|grep http://|cut -f 4 -d ' '`;do wget $i;done;
grep -Eo '\'r -np http://www.tower-productions.co.uk/naturism/images/?C=S;O=D
wget -r -np http://www.tower-productions.co.uk/naturism/images/?C=S;O=D

# copia archivos via ssh
rsync -avz -e ssh usuario@foo.com:/home/i/ircadmin/Unreal3.2.7/* ./.

# Conexiones Abiertas
netstat -an | grep ESTABLISHED

# Manda un HUP signal a X server🙂
ps aux | grep X | grep -v "grep" | awk '{ print $2}' | xargs kill -HUP $1

# Encuentra archivos de cierto tama~o
find $HOME/ -type f -size +100000k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'

# Lista los ultimos 10000 comandos mas usados
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
history | awk '{print $2}' | awk 'BEGIN {FS="|"}{print $1}' | sort | uniq -c | sort -n | tail | sort -nr

# Un puntero bello
export PS1="\n\u@\H($PWD):"

# Convertir archivos a avi
# Convierte todos *.flvs en $PWD a .avis
# Para convertir otra clase nomas cambia la extencion .flv (ocupas mencoder)
for i in *.flv; do mencoder -ovc lavc -oac mp3lame -o "$i.avi" "$i"; done

# hacer un playlist en escritorio
rm ~/Desktop/misrolas.m3u
find ~/music/ -iname "*.mp3" -print >> ~/Desktop/misrolas.m3u
find ~/music/ -iname "*.ogg" -print >> ~/Desktop/misrolas.m3u

# Muestra nombre de maquina en network
nmblookup -A

# Borrar Archivo(s)
find . -name '._*' -exec rm {} \;
# Con confirmacion (mejor cholo que mal arrepentido)
find . -name '._*' -ok rm {} \;

# Despliega una bella fecha/hora
echo $(date '+%A, %B %e, %Y, a las %l:%M %p')

# Ver Zonas de tiempo
find /usr/share/zoneinfo/* -type f -print | xargs -n 2 | awk '{ printf " %-38s %-38s\n", $1, $2 }' | more
find /usr/share/zoneinfo/* -type f -print | xargs -n 2 | awk '{print $1}' | more

# Salida violenta (sin decir adios)
killall -s HUP -u $(whoami)

# lista todos los links de la URI
lynx -dump "www.google.com" | sed -n '/^References$/,$p' | grep -E '[[:digit:]]+\.' | awk '{print ""$2"\n"}' | cut -d\? -f1
lynx -dump "www.freebsd.org" | sed -n '/^References$/,$p' | grep -E '[[:digit:]]+\.' | awk '{print ""$2"\n"}' | cut -d\? -f1
lynx -dump "www.debian.org" | sed -n '/^References$/,$p' | grep -E '[[:digit:]]+\.' | awk '{print ""$2"
\n"}' | cut -d\? -f1 > ~/Desktop/debianlinks.html

# Lista manpages con el Hippie de Stallman dentro
find /usr/share/man -name '*.gz' -exec zgrep -il stallman {} \; | sed -r 's@.*/@@g; s@\..*@@'
find /usr/share/man* -name '*.gz' -exec zgrep -il "richard.*stallman" {} \; | sed -r 's@.*/@@g; s@\..*@@' | sort -u

# Renombrando multiples extenciones
for old in *.png; do cp $old `basename $old .png`.gif; done

#crackear wifi (simplificado)
cd; mkdir captura;cd captura; sudo wlanconfig destroy; sudo wlanconfig create wlandev wifi0 wlanmode monitor; sudo airodump-ng ; y vez que canal quieres monitorear y: sudo airodump-ng -c CANAL -w dump ; sudo aircrack-ng -b ARCHIVO_CREADO.cap

## Lo siguiente de WIFI aplica a mi Atheros de mi Lappie
## Tengo instalado madwifi.
## COMO root ###########################################

# Lista las AP disponibles (Atheros)
su
wlanconfig ath0 list scan
exit

# Pone mi Atheros en modo monitor
su
wlanconfig ath0 destroy
wlanconfig ath0 create wlandev wifi0 wlanmode monitor
ifconfig ath0 up
exit

# Crack con wesside-ng
su
oldpwd=$PWD
cd
cd micaptura
rm wep.cap prga.log key.log
wesside-ng -i ath0 -k 1
cd $oldpwd
exit

# Jugando con airoplay-ng
su
aireplay-ng -3 -b BROADCAST-MAC -h HOST_MAC ath0
airodump-ng -w ARCHIVO_A_GRABAR -c NUMERO_CANAL --bssid BSSID_MAC ath0
airdecap-ng ARCHIVO_A_GRABAR.cap
exit

# Prueba si Atheros puede hacer injection
aireplay-ng --test ath0

#regresarlo a modo normal
su
wlanconfig ath0 destroy
wlanconfig ath0 create wlandev wifi0 wlanmode sta
ifconfig ath0 up
wlanconfig ath0 list scan
exit

# Cambiando MAC con macchanger
su
ifconfig ath0 down
macchanger -r ath0 # Randomizada
macchanger -m XX:XX:XX:XX:XX:XX ath0 # Clonada (mensione Clonada? maldicion!)
ifconfig ath0 up
exit

# nmap scaneando
nmap -sS -p 1-64000
nmap -sT -p 1-6400
nmap -A -p 1-65535

# Lista casi hasta composicion quimica de memoria
lshw -C Memory

# CPU info
lshw -C CPU

# Matando firefox Pidgin
pgrep pidgin|xargs kill -s 9
pgrep firefox|xargs kill -s 9

# Espacio Ocupado
du -sh $HOME

# Regresando el gnome panels y menus a default
gconftool --recursive-unset /apps/panel && killall gnome-panel »
# si no funciona, puedes borrarle todo menus y dejarlo bien default.
sudo rm -rf ~/.gconf/apps/panel
killall -s HUP -u $(whoami)

# Lista Contrase~as username en cache de pidgin.
cat ~/.purple/accounts.xml | grep ""; cat ~/.purple/accounts.xml | grep word

# resuelve que arch usa
uname -m | tr [:upper:] [:lower:] | tr -d [:blank:]

# resuelve os:
uname -s | tr [:upper:] [:lower:] | tr -d [:blank:]

# Que version?
cat /etc/issue

# muestra windows shares
smbclient -N -L

# bloquea youtube localmente
#block main youtube site
echo "127.0.0.1 localhost" > /etc/hosts
echo "127.0.0.1 http://www.youtube.com" >> /etc/hosts
echo "127.0.0.1 youtube.com" >> /etc/hosts

# bloquea youtube con iptables
iptables -I FORWARD -d youtube-ui.l.google.com -j DROP

#Para iptables block youtube , para borrarla -D
iptables -A FORWARD -d 74.125.0.0/16 -j DROP
iptables -I FORWARD -d 74.125.0.0/16 -j DROP

# Bloquea todo el subnet
iptables -I FORWARD -d 66.102.9.0/24 -j DROP

#bloquear un puerto
iptables -A INPUT -p udp --dport 2299 -j DROP
iptables -A OUTPUT -p tcp --dport 2299 -j DROP

# dump todo relacionado gconf
gconftool-2 --dump /

# Inicializa el random seed aleatoriamente
SEED=$(head -1 /dev/urandom | od -N 1 | awk '{ print $2 }')

# Mira si eres root
if [ "X`id -u`" = "X0" -a -z "$RUN_AS_USER" ]; then echo "Tienes superpoderes";fi

# un for-loop
for i in `echo {1..9} 255`; do echo "$i"; done

# si no existe crea directorio
[[ ! -d direct ]] && mkdir `echo direct`

# Si existe borra directorio
[[ -d direct ]] && rmdir `echo direct`

# Verifica si hay pings a google
[[ `ping -c1 -W3 http://www.google.com >/dev/null 2>&1` ]] && echo "Tienes internet" || echo "No tienes Internet"

# Si existe midirectorio y si existen archivos .jpg; copialos a otrolado
[[ -d midirectorio ]] && ( [[ `ls midirectorio/*.jpg 2> /dev/null` ]] && cp midirectorio/*.jpg otrolado/ )

# Forma mas segura de asignar lista de archivos
# a un array.
shopt -s nullglob
textfile_listing=( *.txt )

# lista IP’s en /etc
find /etc -type f -exec cat ‘{}’ \; | tr -c ‘.[:digit:]’ ‘\n’ | grep ‘^[^.][^.]*\.[^.][^.]*\.[^.][^.]*\.[^.][^.]*$’

# List archivos con suid a root (+4000)
for file in $( find /usr/bin /sbin /bin /usr/local/bin -perm +4000 ); do ls -ltF –author “$file”;done

# Creando un respaldo de archivos en $PWD hacia otro directorio
ls . | xargs -i -t cp ./{} otro_directorio

# Ejecuta un ‘reverse DNS lookup’ a IP
ipcalc -h IP

# Usando banner
banner -w 60 Hola Mundo

# Leyendo en voz alta /etc/issue
espeak -v es-la -l 10 -s 170 -p 15 < /etc/issue

# Analizando un archivo en HEX
dd if=/bin/ls | hexdump -C | less

# Des-ensamblando un archivo binario
objdump -d /bin/ls | more

# Deja de echo a terminal
stty -echo
stty echo #muestra echoes en terminal (default)

# Lista services
`which service` --status-all

# Lista interfaces
echo $(/sbin/ifconfig | sed -e 's/ .*//')
echo $(/sbin/ifconfig | awk '/^[a-z]/ { print $1 }')

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s