Bash Website Backup Script

d
Nombre: backup-sitename.sh
Descripción: Script que permite realizar un backup de un sitio web
Más información del Script en loneshooter
#!/bin/sh
 
# Cron job runs with:
# bash /home/account/backup/backup-sitename.sh
 
SITEDIRNAME="sitename"
DBNAME="account_dbname"
DBUSER="account_name"
DBPASS="password"
BASEBCKPPATH="/home/account/backup"
DATE=$(date -I)
DESTINATIONDIR="$BASEBCKPPATH/$DATE/$SITEDIRNAME" #e.g. /home/account/backup/2012-07-29/sitename
ERRORLOG=$DESTINATIONDIR/error.log
 
# Delete all previous backups
if [ -d "$DESTINATIONDIR" ]; then
  rm -rf $DESTINATIONDIR
fi
 
# Create backup directory if it doesn't exist, e.g. /home/account/backup/2012-07-29/sitename
if [ ! -d "$DESTINATIONDIR" ]; then
  mkdir -p $DESTINATIONDIR
fi
 
# Backup site folder
tar -czf $DESTINATIONDIR/${SITEDIRNAME}_${DATE}.tgz -C /home/account/addon ./$SITEDIRNAME 2> $ERRORLOG
 
# Backup site database
mysqldump -u $DBUSER -p$DBPASS -h localhost $DBNAME| gzip -9 > $DESTINATIONDIR/${DBNAME}_${DATE}.sql.gz 2> $ERRORLOG
Leer más...

Webinstall.sh

d
Descripción: Shell Script to install dependencies for running PHP applications with mod_fcgi
Autor: Finn Hensner
Nombre: webinstall.sh




#!/bin/bash
# Shell script to install LAMP with dependencies for running PHP applications
# with mod_fcgi
# -------------------------------------------------------------------------
# Version 1.1 (August 18 2011)
# -------------------------------------------------------------------------
# Copyright (c) 2011 Finn Hensner 
# This script is licensed under GNU GPL version 2.0 or above
# -------------------------------------------------------------------------
apt-get update
aptitude install apache2 apache2-suexec libapache2-mod-fcgid php5-cgi
a2dismod php5
a2enmod rewrite
a2enmod suexec
a2enmod include
a2enmod fcgid

apt-get install mysql-server
apt-get install php5-gd
apt-get install php5-common php5-mysql

sleep 1
echo "Adding extensions and fixes to custom ini"
cat > /etc/php5/conf.d/custom.ini << EOF
cgi.fix_pathinfo = 1
extension=gd2.so
extension=pdo.so
extension=pdo_mysql.so 
extension=php_pgsql.so
extension=php_pdo_pgsql.so
EOF

sleep 1
echo "Add server name to Apache config"
echo "ServerName 127.0.0.1" >> /etc/apache2/apache2.conf

sleep 1
echo "Installing ProFTPd server"
apt-get purge proftpd
apt-get install proftpd
#jail users in their home directory
echo -e "\nDefaultRoot ~\n" >> /etc/proftpd/proftpd.conf

sleep 1
echo "Removing default virtual host."
rm /etc/apache2/sites-available/default
rm /etc/apache2/sites-enabled/default-000

sleep 1
echo "Restarting apache2 and proftpd"
service apache2 restart
service proftpd restart
Leer más...

WhoPingMe.py

d
Script: WhoPingMe.py
Description: Detect if you receive a Ping and make a list with Date.
Autor: @LordRNA


#! /usr/bin/env python
########################################################################
#Script     : WhoPingMe.py                                             #
#Description: Detect if you receive a Ping and make a list with Date.  #
#By         : LordRNA                                                  #
#Comments   : Tested on Python 2.6.5                                   #
########################################################################
import socket, datetime
def whopingme(date):

    source = '' #To put the IP Source.
    header = ["%i"%ord(x) for x in data]
#I made a list of int values for each byte in data variable. 
    if int(header[20])==8:#If Type(ICMP) is 8, i received a Echo Request.
        for x in range(4):#To make a string with the IP Source.
            source += str(header[12+x])
            if x<3:source data-blogger-escaped----="---" data-blogger-escaped-date="date" data-blogger-escaped-len="len" data-blogger-escaped-print="print"> "+ str(source)
#I deleted the Miliseconds with [:len(date)-7]

sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)

#ICMP Protocol on RAW Socket

while 1:

    data = sock.recv(21)#I Just want these bytes, IPHeader Lenght + Type(ICMPHeader)
    whopingme(data)#Sending data to whopingme() function.
Leer más...

Convertstr.pl -Reverses and converts a string

d
Autor: Dual
Descripción: Reverses and converts a string to base64, binary, hex, and rot13 and provides  the md5, sha1 and sha256 hashes 
Nombre: convertstr.pl


#!/usr/bin/env perl -w

# convertstr.pl - Reverses and converts a string
# to base64, binary, hex, and rot13 and provides
# the md5, sha1 and sha256 hashes 
#
# by dual

use strict;
use MIME::Base64;
use Digest::MD5;
use Digest::SHA qw(sha1_hex sha256_hex);

my $usage = "convertstr.pl - Reverses and converts a string
to base64, binary, hex and rot13, and provides
the md5, sha1 and sha256 hashes
Usasge: perl convertstr.pl 
";

# Get and check args
print $usage and exit unless my $string = shift;
chomp($string);

# Print header
print "Converting \'$string\'...\n\n";

# Reverse
print "REVERSED:\n";
my $reversed = reverse($string);
print $reversed . "\n\n";

# Base64
print "BASE64:\n";
my $base64 = encode_base64($string);
chomp($base64);
print $base64 . "\n\n";

# Binary
print "BINARY:\n";
my $binary = unpack('B*', $string);
print $binary . "\n\n";

# Hex
print "HEX:\n";
my $hex = unpack('H*', $string);
print $hex . "\n\n";

# Rot13
print "ROT13:\n";
if ($string =~ /[^A-Za-z\s]/) {
  print ">>> String must be alphabetic\n\n";
}
else {
  my $rot13 = $string;
  $rot13 =~ tr/A-Za-z/N-ZA-Mn-za-m/;
  print $rot13 . "\n\n";
}

# MD5
print "MD5:\n";
my $md5 = Digest::MD5->new;
$md5->add($string);
my $md5hex = $md5->hexdigest;
print $md5hex . "\n\n";

# SHA1
print "SHA1:\n";
my $sha1hex = sha1_hex($string);
print $sha1hex . "\n\n";

# SHA256
print "SHA256:\n";
my $sha256hex = sha256_hex($string);
print $sha256hex . "\n\n";

# Close out
print "Done.\n"
Leer más...

Base64pl.pl Encode/Decode

d
Autor: Dual
Descripción: Encode / Decode strings usando base64
Nombre: base64pl.pl

#!/usr/bin/env perl -w

# base64pl.pl - Encodes/decodes string(s) using base64
# by dual

use strict;
use MIME::Base64;

my $opt;
my $usage = "base64pl.pl -
Encodes or decodes a string using base64
Usage: perl base64pl.pl <-e data-blogger-escaped-d="d"> 
-e => encode
-d => decode
";

print $usage and exit unless (defined($opt = shift) && $opt =~ /^(-e|-d)$/);
print $usage and exit unless ($#ARGV > -1);

if ($opt =~ /e/) {
  my $enc_ref = \&encode;
  for my $enc_str (@ARGV) {
    $enc_ref->($enc_str);
  }
}
else {
  my $dec_ref = \&decode;
  for my $dec_str (@ARGV) {
    $dec_ref->($dec_str);
  }
} 

sub encode {
  my $string = $_[0];
  my $encoded = encode_base64($string);
  chomp($encoded);
  print "$string: $encoded\n";
}

sub decode {
  my $string = $_[0];
  my $decoded = decode_base64($string);
  chomp($decoded);
  print "$string: $decoded\n";
}

Fuente
Leer más...

Zone-H Reporter Perl

d
Autor: PrinceofHacking Descripción: Script realizado en Perl que nos permite interactuar con ZOne-H para reportar.


#!/usr/bin/perl
 
#####################################
#                Zone-H Notify                                          #                                 
#####################################
 
############
use LWP::UserAgent;
############
system('cls');
system ('title Powered By PrinceofHacking');
############
 
print "                         #####################\n   ";
print "                      #    Zone-Notify    #\n  ";
print "                       #        USO        #\n  ";
print "                       # [1] Single Deface #\n";
print "                         # [2] Mass   Deface #\n";
print "                         # [3] Help & About  #\n";
print "                         #####################\n\n   ";
 
$pick=;
if ($pick>3) {
print "Unknown Command\n";
}
if ($pick ==1)
{
 
print "Mode : Single Deface\n\n";
print "Defacer [Nickname] :\n";
$Def=;
print "Dominio:\n";
$Dom=;
if ($Dom =~ /http:\/\//)
{
$U="http://zone-h.org/notify/single";
$lwp=LWP::UserAgent->new;
$res=$lwp  -> post($U,[
'defacer'     => $Def,
'domain1'   => $Dom,
'hackmode' => '15',
'reason'       => '1',
'submit'       => 'Send',
]);
if ($res->content =~ /color="red">(.*)<\/font><\/li>/) {
print "Result => $1";
}
else
{
print "Error\n";
}
}
else
{
$new="http://" . "$Dom";
$U="http://zone-h.org/notify/single";
$lwp=LWP::UserAgent->new;
$res=$lwp  -> post($U,[
'defacer'     => $Def,
'domain1'   => $new,
'hackmode' => '15',
'reason'       => '1',
'submit'       => 'Send',
]);
if ($res->content =~ /color="red">(.*)<\/font><\/li>/) {
print "Result => $1";
}
else
{
print "Error\n";
}
}
}
#############################################Mass###########################################
if ($pick == 2){
print "Mode : Mass Deface\n\n";
open(site,"owned.txt");
 
@ARRAY=;
 
close site;
print "Defacer [Nickname] :\n";
$Def=;
foreach $mass(@ARRAY){
if ($mass !~ /http:/) {
$mass='http://' . $mass;
}
print "$mass\n";
 
$U="http://zone-h.org/notify/single";
$lwp=LWP::UserAgent->new;
$res=$lwp  -> post($U,[
'defacer'     => $Def,
'domain1'   => $mass,
'hackmode' => '15',
'reason'       => '1',
'submit'       => 'Send',
]);
if ($res->content =~ /color="red">(.*)<\/font><\/li>/) {
print "Result => $1\n\n";
}
else
{
print "Error\n";
}
}
}
#####################About##############
if ($pick ==3)
{
print "Para la opcion [2] crear un texto con las paginas y guardarlo como : owned.txt\n";
print "Example\n";
print "http://link.com\n";
print "http://link2.com\n";
print "http://link3.com\n\n";
}
Leer más...

Zone-H Reporter

d
Autor: @SankoSK
Descripcion: Script que interactua con Zone H permitiendo reportar desde la querida terminal. 
Nombre: ZoneHReporter.py

###################
#!/usr/bin/python #
# Zone-H Reporter #
# Coded by Sanko  #
###################
 
import urllib,urllib2
 
def main():
        options = """
#######################
#                     #
#  Zone - H Reporter  #
#  [0] Login          #
#  [1] Single Deface  #
#  [2] Mass Deface    #
#  [i] info methods   #
#                     #
#######################"""
 
        print options
        entrada = raw_input("Choose an option -> ")
        if entrada == 0:
                login('user','password')
        elif entrada == 1:
                uploadsingle('defacer','http://web.com/','15','1')
        elif entrada == 2:
                uploadmass('defacer','15','1') #Deben indicar en la funcion los domains defaceados
        elif entrada == 'i':
                info()
        else:
                print "Error , try again\n"
                main()
 
def login(user,password):
        url = 'http://www.zone-h.org/login'
        values = {'user':user,
                 'password':password}
 
        data = urllib.urlencode(values)
        req = urllib2.Request(url, data)
        resp = urllib2.urlopen(req)
        page = resp.read()
        print page
 
def uploadsingle(defacer,domain,hackmode,reason):
        url = 'http://www.zone-h.org/notify/single'
        values = {'defacer':defacer,
                  'domain1':domain,
                  'hackmode':hackmode,
                  'reason':reason,
                  'submit':'Send'}
 
        data = urllib.urlencode(values)
        req = urllib2.Request(url, data)
        resp = urllib2.urlopen(req)
        page = resp.read()
        print page
 
 
def uploadmass(defacer,hackmode,reason):
        url = 'http://www.zone-h.org/notify/mass'
        values = {'defacer':defacer,
                  'domain1':'',
                  'domain2':'',
                  'domain3':'',
                  'domain4':'',
                  'domain5':'',
                  'domain6':'',
                  'domain7':'',
                  'domain8':'',
                  'domain9':'',
                  'domain10':'',
                  'domain1':domain,
                  'hackmode':hackmode,
                  'reason':reason,
                  'submit':'Send'}
 
        data = urllib.urlencode(values)
        req = urllib2.Request(url, data)
        resp = urllib2.urlopen(req)
        page = resp.read()
        print page
 
def info():
        hackmodes = """
        [1] known vulnerability (i.e. unpatched system)
        [2] undisclosed (new) vulnerability
        [3] configuration / admin. mistake
        [4] brute force attack
        [5] social engineering
        [6] Web Server intrusion
        [7] Web Server external module intrusion
        [8] Mail Server intrusion
        [9] FTP Server intrusion
        [10] SSH Server intrusion
        [11] Telnet Server intrusion
        [12] RPC Server intrusion
        [13] Shares misconfiguration
        [14] Other Server intrusion
        [15] SQL Injection
        [16] URL Poisoning
        [17] File Inclusion
        [18] Other Web Application bug
        [19] Remote administrative panel access through bruteforcing
        [20] Remote administrative panel access through password guessing
        [21] Remote administrative panel access through social engineering
        [22] Attack against the administrator/user (password stealing/sniffing)
        [23] Access credentials through Man In the Middle attack
        [24] Remote service password guessing
        [25] Remote service password bruteforce
        [26] Rerouting after attacking the Firewall
        [27] Rerouting after attacking the Router
        [28] DNS attack through social engineering
        [29] DNS attack through cache poisoning
        [30] Not available
        [31] Cross-Site Scripting"""
 
        reasons = """
        [1] Heh...just for fun!
        [2] Revenge against that website
        [3] Political reasons
        [4] As a challenge
        [5] I just want to be the best defacer
        [6] Patriotism
        [7] Not available"""
        
        entrada = raw_input("info hackmodes | info reasons   --- > ")
        if entrada == "hackmodes":
                print hackmodes
        elif entrada == "reasons":
                print reasons
        else:
                print "Error"
                
 
main()

Leer más...

[Python] MP3 Downloader 0.1

d
Nombre: MP3Download.py
Descripción: Script python que nos permite descargar mp3 por media de mp3Skull.
Autor: Doddy



#!usr/bin/python
#MP3 Downloader 0.1
#Coded By Doddy H
 
import sys,urllib,urllib2,re,os,urlparse
 
def toma(web) :
 nave = urllib2.Request(web)
 nave.add_header('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5');
 op = urllib2.build_opener()
 return op.open(nave).read()
 
def head():
 print """
 
 @     @  @@@@@   @@@     @@@@     @@@@  @         @ @    @
 @     @  @    @ @   @    @   @   @    @ @         @ @@   @
 @@   @@  @    @     @    @    @  @    @  @   @   @  @@   @
 @@   @@  @    @     @    @    @  @    @  @   @   @  @ @  @
 @ @ @ @  @@@@@    @@     @    @  @    @  @   @   @  @ @  @
 @ @ @ @  @          @    @    @  @    @   @ @ @ @   @  @ @
 @  @  @  @          @    @    @  @    @   @ @ @ @   @   @@
 @  @  @  @      @   @    @   @   @    @    @   @    @   @@
 @     @  @       @@@     @@@@     @@@@     @   @    @    @
 
 
 
                                          
                              Coded By Doddy H
 
                                       
"""
 
def copyright():
 print "\n\n(C) Doddy Hackman 2012\n"
 raw_input()
 sys.exit(1)
 
def proxar(a,b,c):
 sys.stdout.write("\r[+] Status : %s / %s" % (a * b,c))
  
def down(file,filesave):
 print "\n[+] File to download : "+filesave+"\n"
 try:   
  urllib.urlretrieve(file,filesave,reporthook=proxar)
 except:
  print "\n[-] Error\n"
  copyright()
 print "\n\n[+] File Download in "+os.curdir+"/"+filesave
 
def buscar(titulo) : 
 
 songs = []
 datas =[]
 links = []
 datas_back = []
 links_back = []
 
 titulo = re.sub(" ","_",titulo)
 
 print "\n\n[+] Searching ...\n"
 
 code = toma("http://mp3skull.com/mp3/"+titulo+".html")
 
 if not (re.findall("Sorry, no results found for",code)):
 
  songs = re.findall("
Leer más...

Script Bash para listar correo de servidor POP3

d
Autor: efollana
Descripción: Script Bash para listar correo de servidor POP3

 #!/bin/bash
 # Configuracion de la cuenta
IP=192.168.0.1
PORT=110
MAIL_ADDRESS=pruebas@gmail.com
PASSWORD=1234
 cat < < EOF | netcat
$IP $PORT user $MAIL_ADDRESS pass $PASSWORD list EOF

  Fuente
Leer más...

Script para cambiar el mirror de Arch Linux

d
Autor: @jorgicio
Descripción:  Script que nos permite cambiar de mirror en ArchLinux



#!/bin/bash
HORA=`date +%H`
MINUTO=`date +%M`
RUTAMIRRORPACMANCHILE=/etc/pacman.d/mirrorlist.chile
RUTAMIRRORPACMANBRASIL=/etc/pacman.d/mirrorlist.brasil
MIRRORLISTPACMAN=/etc/pacman.d/mirrorlist
if [ $HORA -lt 19 ];then
    if [ $HORA -ge 10 ];then
        cat $MIRRORLISTPACMAN | grep .br
        if [ $? == 1 ];then
            cp $RUTAMIRRORPACMANBRASIL $MIRRORLISTPACMAN
            zenity --info --text="Mirror actualizado a: Brasil"
        fi
    fi
elif [ $HORA == 19 ];then
    if [ $MINUTO -ge 15 ];then
        cat $MIRRORLISTPACMAN | grep .cl
        if [ $? == 1 ];then
            cp $RUTAMIRRORPACMANCHILE $MIRRORLISTPACMAN
            zenity --info --text="Mirror actualizado a: Chile"
        fi
    fi
else
    if [ $HORA -le 23 ];then
        cat $MIRRORLISTPACMAN | grep .cl
        if [ $? == 1 ];then
            cp $RUTAMIRRORPACMANCHILE $MIRRORLISTPACMAN
            zenity --info --text="Mirror actualizado a: Chile"
        fi
    fi
fi
Leer más...

Script UI para MPlayer

d
Autor: Desconocido
Descripción: Script que nos permite tener una pequeña UI por medio de Zenity para Mplayer

#!/bin/bash
function video {
VIDEO=$(zenity --file-selection --title "Selecciona un video")
}
video
if [ "0" = "$?" ]; then
    aoss mplayer -vo x11 $VIDEO
elif [ "1" = "$?" ]; then
   zenity --error --title "Mplayer" --text "No seleccionaste un video"
   exit
fi
Leer más...

m4a2mp3.bash

d
Nombre: m4a2mp3.bash
Autor: Desconocido
Descripción: Script que permite convertir archivos m4a a mp3
#!/bin/bash

iflame=`type -p lame`
 if [ -z $iflame ]; then
  echo -e "\n\nlame necesita estar instalado\n"
  exit 1
 fi

for i in *.m4a; do
echo "Convirtiendo: ${i%.m4a}.mp3"
faad -o - "$i" | lame - "${i%.m4a}.mp3"
done
Permisos: chmod 700 m4a2mp3.bash 
Ejecución: ./m4a2mp3.bash
Leer más...

identificadorIP.bash

d
Nombre: identificadorIP.bash
Autor: Desconocido
Descripción: Script que permite identificar las IP's activas de un segmento determinado
#!/bin/bash
for IPS in `seq 1 255`; do
IP=`ping -c 1 172.16.0.$IPS | grep '100% packet loss' | wc -l` 
if [ $IP = 0 ]; then
echo "IP que responde: 172.16.0.$IPS"
else
echo "IP que no responde: 172.16.0.$IPS"
fi
done

Permisos: chmod 700 identificadorIP.bash 
Ejecución: ./identificadorIP.bash
Leer más...

wav2mp3.bash

d
Nombre: wav2mp3.bash
Autor: Desconocido
Descripción: Script que permite convertir archivos .wav a .mp3
#!/bin/bash
# name of this script: wav2mp3.sh
# wav to mp3


iflame=`type -p lame`
	if [ -z $iflame ]; then
		echo -e "\n\nlame necesita estar instalado\n"
		exit 1
	fi

for i in *.wav; do
 if [ -e "$i" ]; then
   file=`basename "$i" .wav`
   lame -h -b 192 "$i" "$file.mp3"
 fi
done
exit 0
Permisos: chmod +x wav2mp3.bash 
Ejecución: ./wav2mp3.bash
Leer más...

pentestlab_scanner.sh

d
Nombre: pentestlab_scanner.sh
Autor: netbiosX
Descripción: Script que actúa como un simple scanner de puertos TCP
Visto en Pentestlab
#!/bin/bash
#Autor: netbiosX
#Website:https://pentestlab.wordpress.com
#Defining the variables
IP=$1
firstport=$2
lastport=$3

function portscan
{
	for ((counter=$firstport; counter<=$lastport; counter++))
		do
		 	(echo > /dev/tcp/$IP/$counter) > /dev/null 2>&1 && echo "$counter -- open"
		done
}

portscan
Permisos: chmod 700 pentestlab_scanner.sh 
Ejecución: ./pentestlab_scanner.sh [ IP ] [ Primer Puerto ] [ Último Puerto ]
Leer más...

Scrip para extraer las cuentas de correo pertenecientes a un dominio

d
Descripción El presente Script se diseño para extraer información referente a las cuentas de correo resentes en Zimbra.
Autor: Desconocido



USO:

Para ejecutar el Script vamos al directorio que lo contiene y ejecutamos lo siguiente:

./cuentas.sh "parametros"

Si necesita información sobre el script
./cuentas.sh --help

Ejemplo: ./cuenta.sh example.com lista.txt example@example.com 

#!/bin/bash
if [ "$1" = "--help" ]; then
echo "./cuenta.sh   "
exit
fi
 
 
if [ "$1" = "" ]; then
echo "DEBE COLOCAR EL NOMBRE DEL DOMINIO DE LAS CUENTAS A EXPORTAR: EJ: synaptic.cl"
exit 
fi
 
if [ "$2" = "" ]; then
echo "DEBE COLOCAR EL NOMBRE DEL ARCHIVO EN EL CUAL EXPORTARA LAS CUENTAS: EJ: LISTAS.TXT"
exit
fi
 
if [ "$3" = "" ]; then
echo "DEBE COLOCAR UNA CUENTA DE CORREO ELECTRONICO PARA ENVIAR EL INFORME: EJ: SOPORTE@SYNAPTIC.CL"
exit
fi
 
 
 
DOMINIO=$1
listaDeNombres=$2
 
COMANDO1='/opt/zimbra/bin/zmprov ga '
 
echo "NOMBRE,CUENTA,ESTADO">$listaDeNombres
clear
echo "Generando Informe Espere Por Favor...."
for usuario in `/opt/zimbra/bin/zmprov -l gaa $DOMINIO`
do
 #echo -e "$usuario\n"
 #echo -e "Comando: zmprov ga $usuario |grep displayName |awk -F': ' '{print $2}'\n"
        $COMANDO1 $usuario >tmp.txt
        nombre=`cat tmp.txt | grep displayName | awk -F': ' '{print $2}'\n`
        cuenta=`cat tmp.txt | grep '# name' | awk '{print $3}'\n`
        estado=`cat tmp.txt | grep "zimbraAccountStatus:" | awk -F': ' '{print $2}'\n`
        echo "$nombre,$cuenta,$estado">>$listaDeNombres
done
echo "Enviando Correos Electronicos del Dominio $1 a $3"
mail -s "CORREOS ELECTRONICOS DOMINIO $1" $3<$listaDeNombres
echo "Proceso Terminado con Exito"
echo "eliminando archivos temporales"
rm -rf tmp.txt

Fuente
Leer más...

Script de instalación de TOR

d
Autor: Anonymous Mexico
Twitter: @MexicanH @Anonymousmexi @rofl4all @Anon_yuc
Descripcion: Script que automatiza la instalación de Tor

#!/bin/sh

colorise=1

print_welcome ()
{

echo " 
 
  @@@@@@  @@@  @@@ @@@@@@@  @@@@@@  @@@ @@@  @@@  @@@@@@ @@@@@@@  @@@@@@  @@@      @@@     
 @@!  @@@ @@!  @@@   @@!   @@!  @@@ @@! @@!@!@@@ !@@       @@!   @@!  @@@ @@!      @@!     
 @!@!@!@! @!@  !@!   @!!   @!@  !@! !!@ @!@@!!@!  !@@!!    @!!   @!@!@!@! @!!      @!!     
 !!:  !!! !!:  !!!   !!:   !!:  !!! !!: !!:  !!!     !:!   !!:   !!:  !!! !!:      !!:     
  :   : :  :.:: :     :     : :. :  :   ::    :  ::.: :     :     :   : : : ::.: : : ::.: :
  
Coded By: Anonymous Mexico
Twitter: @MexicanH @Anonymousmexi @rofl4all @Anon_yuc
"
}

get_test_url ()
{
echo "Antes de instalar tor, tienes que escribir el nombre de tu distribucion:\n"
echo " Debian unstable (sid) is "'sid'" "
echo " Debian testing is "'wheezy'" "
echo " Debian 6.0 (squeeze) is "'squeeze'""
echo " Debian 5.0 (lenny) is "'lenny'""
echo " Ubuntu 12.04 is "'precise'" "
echo " Ubuntu 11.10 is "'oneiric'""
echo " Ubuntu 11.04 is "'natty'""
echo " Ubuntu 10.10 or Trisquel 4.5 is "'maverick'""
echo " Ubuntu 10.04 or Trisquel 4.0 is "'lucid'""
echo " Ubuntu 9.10 or Trisquel 3.5 is "'karmic'""
echo " Ubuntu 8.04 is "'hardy'"\n"
  echo "distribucion : "
  read  distribucion
  echo 
echo "deb  http://deb.torproject.org/torproject.org $distribucion main" >> /etc/apt/sources.list
clear scr
echo "[*] Instalando las llaves...."
gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
echo "Done!!"
clear scr
echo "[*] Actualizando repositorios...."
apt-get update
clear scr
echo "[*] Instalando paquetes deb"
apt-get install deb.torproject.org-keyring
echo "[*] Done!!"
clear scr
echo "[*] Instalando TOR, Privoxy, & Polipo"
apt-get install tor
echo "[*] Done!!"
apt-get install privoxy
echo "[*] Configurando privoxy"
echo "forward-socks4a / 127.0.0.1:9050 . " >> /etc/privoxy/config
apt-get install polipo
echo "[*] Configurando polipo"
cd /etc/polipo/
rm  config > /dev/null
wget --output-document=config http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/config.sample 
echo "Done!!"
echo "Tor ha sido instlado satisfactoriamente."

}

if [ "$colorise" = 1 ]; then print_welcome  ; fi ;
get_test_url
Leer más...

Script Python para generar ficheros LDIF de usuarios

d
Nombre: usuariosGenerarLDIF.py
Autor: Juan Luis García
Descripción: Proceso automatizado de creación de un fichero LDIF que podría servir para dar de alta masivamente a un grupo de usuarios cuyos datos estuvieran almacenados en un fichero csv.
Visto en LDAP Config
#! /usr/bin/env python

# Generar fichero LDIF de usuarios
# CC 2011: Juan Luis Garcia para www.ldapconfig.net 
# juanluisga@ldapconfig.net

# MODULOS
import csv,random,base64,hashlib,ldap,unicodedata,argparse

# FUNCIONES
def filtrarCaracteresEspeciales(cadena):
    return ''.join((c for c in unicodedata.normalize('NFD', unicode(cadena,'UTF8')) if unicodedata.category(c) != 'Mn'))
 
def generarPassword(identificador):
    letrasMin = "abcdefghijklmnopqrstuvwxyz"
    letrasMay = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    numeros = "1234567890"
    especiales="!@#$%&=;."
    secuencia = letrasMin + letrasMay + numeros + especiales
    cadena = ""
    for i in range(8):
       cadena = cadena + random.choice(secuencia)
    k = hashlib.md5(cadena)
    encriptada = k.digest()
    encriptada = "{MD5}" + base64.standard_b64encode(encriptada)
    return cadena,encriptada
    
def conflictoLDAP(host,base,identificador):
    directorio = ldap.open(host)
    directorio.set_option(ldap.OPT_PROTOCOL_VERSION,ldap.VERSION3)
    result_id = directorio.search(base,ldap.SCOPE_SUBTREE,"uid="+identificador)
    result_type, result_data = directorio.result(result_id,0)
    if result_type == ldap.RES_SEARCH_ENTRY:
        return True
    else:
        return False
    
        
# DEFINICION DE PARAMETROS
parser = argparse.ArgumentParser(description="Generar fichero LDIF de usuarios")

parser.add_argument("-f","--ficheroEntrada",action="store",dest="ficheroEntrada",type=str,default="nuevos.csv",help="(Por defecto: nuevos.csv) Fichero en formato csv con los datos de los usuarios. Usar punto y coma ';' como separador y sin delimitacion de campos. Formato: Nombre;Apellidos;uid;departamento ")
parser.add_argument("-s","--servidorLDAP", action="store", dest="servidorLDAP",type=str, default="localhost",help="(Por defecto: localhost) Servidor LDAP sobre el que se cargaran el fichero LDIF generado.")
parser.add_argument("-b","--baseDN", action="store", dest="baseDN",type=str,default="dc=ldapconfig,dc=net",help="(Por defecto: dc=ldapconfig,dc=net) Sufijo del directorio LDAP. ")
parser.add_argument("-u","--uidNumberInicial", action="store", dest="uidNumberInicial", type=int,default=101,help="(Por defecto: 101) Primer uidNumber disponible a partir del cual se numeran las nuevas entradas.")

parametros = parser.parse_args()

ficheroEntrada = parametros.ficheroEntrada
servidorLDAP = parametros.servidorLDAP
baseDN = parametros.baseDN
uidNumberInicial = parametros.uidNumberInicial

rutaFicheros = "./"

ficheroLDIF = rutaFicheros + "usuarios.ldif"
ficheroUsuarios = rutaFicheros + "usuarios.csv"
ficheroConflictos = rutaFicheros + "usuarios.log"

fEntrada = open(ficheroEntrada,"rb")
fLDIF = open(ficheroLDIF,"wb")
fUsuarios = open(ficheroUsuarios,"wb")
fConflictos = open(ficheroConflictos,"wb")

rEntrada = csv.reader(fEntrada,delimiter=";")
wUsuarios = csv.writer(fUsuarios,delimiter=";")
wConflictos = csv.writer(fConflictos,delimiter=";")

uidNumber = uidNumberInicial - 1

wUsuarios.writerow(["APELLIDOS","NOMBRE","UID","PASSWORD"])
wConflictos.writerow(["UID","MOTIVO"])


for index,row in enumerate(rEntrada):
    nombre = row[0]
    apellidos = row[1]
    uid = row[2]
    departamento = row[3]
        
    if (conflictoLDAP(servidorLDAP,baseDN,uid)):
        wConflictos.writerow([uid,"Ya existe la cuenta"])
    else:
        password = generarPassword(uid)
        uidNumber = uidNumber + 1
        
        # ESCRIBE EN EL FICHERO DE USUARIOS
        wUsuarios.writerow([apellidos,nombre,uid,password[0]])
                
        # ESCRIBE EN FICHERO LDIF
        fLDIF.write("dn: uid=" + uid + ",ou=usuarios,ou=" + departamento + "," + baseDN + "\n")
        fLDIF.write("objectClass: inetOrgPerson\n")  
        fLDIF.write("objectClass: posixAccount\n")        
        fLDIF.write("cn: " + nombre + "\n") 
        fLDIF.write("sn: " + apellidos + "\n")
        fLDIF.write("displayName: "+ nombre + " " + apellidos + "\n")
        fLDIF.write("uid: " + uid + "\n")
        fLDIF.write("homeDirectory: /home/" + uid + "\n")        
        fLDIF.write("uidNumber: " + str(uidNumber) + "\n")
        fLDIF.write("gidNumber:1001\n")
        fLDIF.write("userPassword: " + password[1] + "\n")
        fLDIF.write("\n");
        
fEntrada.close()
fLDIF.close()
fUsuarios.close()
fConflictos.close()   
Más información del script en el sitio del autor: LDAP Config
Leer más...

nslookup.sh

d
Nombre: nslookup.sh
Autor: Omar A. Orozco @csimxnet @oorozcoo
Descripción: Script que permite usar nslookup de 10 maneras diferentes automatizando su uso
#!/bin/sh
#Fecha: 26 de Julio de 2012
#Autor: Omar A. Orozco
#Twitter: @csimxnet @oorozcoo
#Website: www.csimx.net
#Version: 0.1
#Fecha de modificacion:
#


while [ "$OPCION" != "0" ]; do
  echo ""
  echo "          Menu         "
  echo "      -----------      "
  echo "  1. Simple NSLookup"
  echo "  2. Query the MX Record"
  echo "  3. Query the NS Record"
  echo "  4. Query the SOA Record"
  echo "  5. View Available DNS Records"
  echo "  6. Reverse DNS lookup"
  echo "  7. Using Specific DNS Server"
  echo "  8. Change the port number to connect with"
  echo "  9. Change timeout interval to wait for a reply"
  echo "  10. Enabling debug mode"
  echo "  0. Salir"
  echo -e "\n  Elige una opcion"
    read OPCION

  case $OPCION in
    1) 
      echo
      echo -e "\nIngresa el dominio o la IP"
      read DOMAIN
      nslookup $DOMAIN
      ;;
    2)
      echo
      echo -e "\nIngresa el dominio o la IP"
      read DOMAIN
      nslookup -query=mx $DOMAIN
      ;;
    3)
      echo
      echo -e "\nIngresa el dominio o la IP"
      read DOMAIN
      nslookup -type=ns $DOMAIN
      ;;
    4)
      echo
      echo -e "\nIngresa el dominio o la IP"
      read DOMAIN
      nslookup -type=soa $DOMAIN
      ;;
    5)
      echo
      echo -e "\nIngresa el dominio o la IP"
      read DOMAIN
      nslookup -type=any $DOMAIN
      ;;
    6)
      echo
      echo -e "\nIngresa el dominio o la IP"
      read DOMAIN
      nslookup $DOMAIN
      ;;
    7)
      echo
      echo -e "\nIngresa el dominio o la IP"
      read DOMAIN
      echo -e "\nIngresa el servidor DNS a utilizar"
      echo -e "\nEjemplo 8.8.8.8 o ns1.ejemplo.com"
      read SERVER
      nslookup $DOMAIN $SERVER
      ;;
    8)
      echo
      echo -e "\nIngresa el dominio o la IP"
      read DOMAIN
      nslookup -query=mx $DOMAIN
      ;;
    9)
      echo
      echo -e "\nIngresa el dominio o la IP"
      read DOMAIN
      nslookup -timeout=10 $DOMAIN
      ;;
    10)
      echo
      echo -e "\nIngresa el dominio o la IP"
      read DOMAIN
      nslookup -debug $DOMAIN
      ;;
  esac
done
echo "----------------"
echo "Hasta Pronto!!"
echo "----------------"

Leer más...

[Python] Goo - Acorta tu URL

d
Autor: @The_Swash
Descripción : Un acortador de url que la obtiene de goo.gl

#----------------------------------------------------------
# Obtener URL acortada mediante http://goo.gl
# Programador: The Swash
# Agradecimientos: Psymera, 11Sep, [Zero] y todo h-sec
# Website: http://h-sec.org
#----------------------------------------------------------
 
import socket, urllib, re
def GetGooURL(url):
    header = ['POST /api/shorten HTTP/1.1\r\n',
              'Host: goo.gl\r\n',
              'Content-Type: application/x-www-form-urlencoded;charset=utf-8\r\n',
              'Content-Length: 41\r\n',
              'Connection: close\r\n\r\n',
              'URLENCODE']
    if re.match('^http://', url):
        url2 = url
    else:
        url2 = 'http://' + url
    address = socket.gethostbyname('goo.gl')
    link = urllib.urlencode({'url':url2})
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    header[5] = link + '&security_token\r\n'
    length = len(header)
    try:
        sock.connect((address,80))
        for i in range(length):
            sock.send(header[i])
        buff = sock.recv(1024)
    except:
        return 'Error de conexion'
     
    sock.close()
    data = re.findall('Location: (.+)\r\n', buff)
    return data[0]
 
url = GetGooURL('h-sec.org')
print url
raw_input()
Leer más...

Versions.sh

d
Nombre: Versions.sh
Autor: Damon Parker
Descripción: Shell script para encontrar las versiones instaladas de los Demonios Principales de un Servidor.
Visto en Damon Parker
#!/bin/sh

# $Id: versions.sh 30 2007-02-26 19:18:48Z damonp $
#
# Shell script to list versions of common server daemons and utilities
#
# Copyright (c) 2007 Damon Parker < damonp@damonparker.org >
# Licensed under the GNU GPL.  See http://www.gnu.org/licenses/gpl.html

# This script is not supported in any way.  Use at your own risk.
#

uname -a

if [ -f /etc/redhat-release ]; then
        echo
        echo Redhat Version:
        cat /etc/redhat-release
fi

echo
echo Apache:
httpd -v
php -v

echo
echo MySQL:
mysql -V

echo
echo Security:
ssh -V
openssl version

echo
echo Network:
/sbin/ifconfig
Leer más...

tar.py

d
Nombre: tar.py
Autor: James Knowlton
Descripción: Realiza acciones en un archivo tar basado en la selección de menú
Visto en: Developer Works
                                                              
#!/usr/bin/python

import tarfile, sys

try:
    #open tarfile
    tar = tarfile.open(sys.argv[1], "r:tar")

    #present menu and get selection
    selection = raw_input("Enter\n\
    1 to extract a file\n\
    2 to display information on a file in the archive\n\
    3 to list all the files in the archive\n\n")

    #perform actions based on selection above
    if selection == "1":
        filename = raw_input("enter the filename to extract:  ")
        tar.extract(filename)
    elif selection == "2":
        filename = raw_input("enter the filename to inspect:  ")
        for tarinfo in tar:
            if tarinfo.name == filename:
                print "\n\
                Filename:\t\t", tarinfo.name, "\n\
                Size:\t\t", tarinfo.size, "bytes\n"
    elif selection == "3":
        print tar.list(verbose=True)

except:
    print "There was a problem running the program"

Permisos: chmod 700 tar.py 
Ejecución: ./tar.py [ archivo.tar ]
Leer más...

Userpwd.py

d
Nombre: Userpwd.py
Autor: James Knowlton
Descripción: Comprueba identificadores de usuario y contraseñas para el cumplimiento de políticas de seguridad
Visto en Developer Works
#!/usr/bin/python

import pwd

#initialize counters
erroruser = []
errorpass = []

#get password database
passwd_db = pwd.getpwall()

try:
    #check each user and password for validity
    for entry in passwd_db:
        username = entry[0]
        password = entry [1]
        if len(username) < 6:
            erroruser.append(username)
        if len(password) < 8:
            errorpass.append(username)

    #print results to screen
    print "The following users have an invalid userid (less than six characters):"
    for item in erroruser:
        print item
    print "\nThe following users have invalid password(less than eight characters):"
    for item in errorpass:
        print item
except:
    print "There was a problem running the script."

Leer más...

Process.py

d
Nombre: Process.py
Autor: James Knowlton.
Descripción: Muestra la información de un proceso que se ejecuta en un formato amigable
Visto en Developer Works
#!/usr/bin/python

import commands, os, string

program = raw_input("Enter the name of the program to check: ")

try:
    #perform a ps command and assign results to a list
    output = commands.getoutput("ps -f|grep " + program)
    proginfo = string.split(output)

    #display results
    print "\n\
    Full path:\t\t", proginfo[5], "\n\
    Owner:\t\t\t", proginfo[0], "\n\
    Process ID:\t\t", proginfo[1], "\n\
    Parent process ID:\t", proginfo[2], "\n\
    Time started:\t\t", proginfo[4]
except:
    print "There was a problem with the program."
Leer más...

SearchFiles.py

d
Nombre: SearchFiles.py
Autor: James Knowlton.
Descripción: Script que busca un patrón de archivos y al encontrarlo presenta los archivos y sus permisos UGO correspondientes. Básicamente desarrolla 3 tareas: Obtiene el patrón de búsqueda, realiza la búsqueda de archivos y presenta los resultados en pantalla
Visto en Developer Works
#!/usr/bin/python

import stat, sys, os, string, commands

#Getting search pattern from user and assigning it to a list

try:
    #run a 'find' command and assign results to a variable
    pattern = raw_input("Enter the file pattern to search for:\n")
    commandString = "find " + pattern
    commandOutput = commands.getoutput(commandString)
    findResults = string.split(commandOutput, "\n")

    #output find results, along with permissions
    print "Files:"
    print commandOutput
    print "================================"
    for file in findResults:
        mode=stat.S_IMODE(os.lstat(file)[stat.ST_MODE])
        print "\nPermissions for file ", file, ":"
        for level in "USR", "GRP", "OTH":
            for perm in "R", "W", "X":
                if mode & getattr(stat,"S_I"+perm+level):
                    print level, " has ", perm, " permission"
                else:
                    print level, " does NOT have ", perm, " permission"
except:
    print "There was a problem - check the message above"
Permisos: chmod 700 SearchFiles.py 
Ejecución: ./SearchFiles.py [ Patrón a buscar ]
Ejemplo: ./SearchFiles.py j*.py
Leer más...

Script en bash para hacer una copia de seguridad de un correo o una lista de correo de qmail/vpopmail

d
Autor: Rock Neurotiko
Descripción: Script en bash para hacer una copia de seguridad de un correo o una lista de correo de qmail/vpopmail.
El uso es simple, se le dan permisos de lectura y escritura de root (700) y lo ejecutas con un parámetro, éste parámetro es el nombre de la lista/email.
Por ejemplo, si es hola@dominio.com lo llamas como "./script.sh hola" y te crea un tar.gz.
El script no está mejorado y se podría hacer mejor, ya que necesitas cambiar la variable DIR y que donde ponga dominio ponga el dominio que tienes, y necesita tener los siguientes directorios:
/var/lib/vpopmail/domains/backups
/var/lib/vpopmail/domains/backups/listas
/var/lib/vpopmail/domains/backups/correos
Contacto: @Binaryrock
#####

#!/bin/bash

NOMBRE=""

#Variables de control de directorios
#Han de estar creados los directorios:
#/var/lib/vpopmail/domains/backups/
#/var/lib/vpopmail/domains/backups/listas/
#/var/lib/vpopmail/domains/backups/correos/

DIR="/var/lib/vpopmail/domains/dominio/"
DIR2="/archive/"
DIR3="/Maildir/cur/"
BACKDIR="/var/lib/vpopmail/domains/backups/"
FIN4="listas/"
FIN5="correos/"

cd $BACKDIR

NUM=1
while [ $NUM -le 2 ]; do
#Lee el nombre para hacer el backup
    echo "Escriba el nombre del correo/lista a hacer backup: "
    read NOMBRE
#Si el nombre es exit, se sale
    if [ "$NOMBRE" = "exit" ]; then 
 break
    fi
#Si el nombre es un correo, hace su backup
    if [ -d "$DIR$NOMBRE$DIR3" ]; then
 cd $FIN4
 echo "Haciendo backup de: " $NOMBRE
 tar -cvf $NOMBRE.tar $DIR$NOMBRE$DIR3
 echo "Backup de: " $NOMBRE " terminado."
 cd -
#Si el nombre es una lista, hace su backup
    elif [ -d "$DIR$NOMBRE$DIR2" ]; then
 cd $FIN5
 echo "Haciendo backup de: " $NOMBRE
 tar -cvf $NOMBRE.tar $DIR$NOMBRE$DIR2
 echo "Backup de: " $NOMBRE " terminado."
 cd -
#Si no existe el nombre
    else
 echo "No existe " $NOMBRE ". Recuerda que si quieres salir, has de escribir exit."
    fi


done

####
Leer más...

¿Cuándo se debe enviar un tweet?

d
Nombre: when_to_tweet.sh
Autor:@orvtech
Descripción:
Inicializa archivos temporales a usar y declara cual es el Twitter Handle (nick) de la cuenta a analizar.
Pide un listado de los IDs de todos los seguidores de esa cuenta.
Busca el numero de seguidores que tiene cada uno de tus seguidores.
Ordena tus seguidores en base a la cantidad de seguidores que estos tengan y toma los top doscientos.
Busca en el timeline de cada uno de estos seguidores por fechas y horas de actualización de estados.
Traduce la fecha a formato POSIX o epoch.
Hace un ajuste de horario basado en segundos, como estoy en la costa oeste de Estados Unidos y estamos en daylight savings time, la diferencia son -7 horas, lo que se traduce a -25.200 segundos.
Redondea la hora en base a 20 minutos.
Determina si la actividad fue un día de semana o un fin de semana y registra la hora en el archivo correspondiente.
Analiza los dos archivos y determina que hora se repite mas asignando a cada uno un porcentaje en base a cuantas veces se repiten.
Presenta el resultado en la consola.
Visto en orvtech
#!/bin/bash
# Tenemos un limite de 150 peticiones por hora
echo > /tmp/TweetsOnWeekends.txt
echo > /tmp/TweetsOnWeekdays.txt
echo > /tmp/WhenToTweet.txt
MyHandle="orvtech"
curl -s "http://api.twitter.com/1/followers/ids.xml?screen_name=$MyHandle" | grep -E '\]*>//g;/ /tmp/followers_ids.txt
echo "Got the list of your followers, lets wait a minute before proceeding"
sleep 25
for IDFollowers in `grep -E '[0-9]' /tmp/followers_ids.txt`
do echo $IDFollowers | tr '\n' ','
curl -s "https://api.twitter.com/1/users/lookup.xml?user_id=$IDFollowers&include_entities=true" | \
grep -E '\|followers_count\>' -m 2 | \
sed -e :a -e 's/<[^>]*>//g;/ /tmp/followers_followed.txt
echo "Now I know how many followers they have, I will take a sample of the top 200 of them based on the amount of followers. Lets find out when they are more active."
for follower_timelines in `grep [0-9] /tmp/followers_followed.txt | sort -t \, -k3 -n -r | awk -F\, '{print $1}' | head -n 200`
do sleep 25
curl -s "https://api.twitter.com/1/statuses/user_timeline.xml?include_entities=true&include_rts=true&user_id=$follower_timelines" | \
grep \ | grep `date +%Y`|sort | uniq -c | grep " 1 " | cut -f2- -d '1' | sed -e :a -e 's/<[^>]*>//g;/ /tmp/WhenToTweet.txt
ls -lah /tmp/WhenToTweet.txt
echo "Now, lets separate weekends from weekdays."
cat /tmp/WhenToTweet.txt | while read WhenToTweet
do
if [[ "$WhenToTweet" =~ .*Sat.* ]]
then echo $WhenToTweet >> /tmp/TweetsOnWeekends.txt
else
if [[ "$WhenToTweet" =~ .*Sun.* ]]
then echo $WhenToTweet >> /tmp/TweetsOnWeekends.txt
else
echo $WhenToTweet >> /tmp/TweetsOnWeekdays.txt
fi
fi
done
echo -e "\nDuring the week is best to tweet at:"
cat /tmp/TweetsOnWeekdays.txt | awk '{print $2}' | grep [0-9]0:00 | sort | uniq -c | sort -n -r | awk '{a[NR] = $1; sum+= $1; b[NR]=$2 } END { for (i = 1; i <= NR; i++) printf "\t %2.2f% Activity at %s \n ", (100 * a[i])/sum, b[i] } ' | head -n 10
echo "------------------------------------"
echo
echo "Weekends is best at:"
cat /tmp/TweetsOnWeekends.txt | awk '{print $2}' | grep [0-9]0:00 | sort | uniq -c | sort -n -r | awk '{a[NR] = $1; sum+= $1; b[NR]=$2 } END { for (i = 1; i <= NR; i++) printf "\t %2.2f% Activity at %s \n ", (100 * a[i])/sum, b[i] } ' | head -n 10
echo "------------------------------------"
Leer más...

Ver información básica de una cuenta de Twitter usando BASH

d
Nombre: twitter-creado.sh
Autor: @orvtech
Descripción: Este script muestra cuando fue creada la cuenta además de cuantas personas sigue, cuantos lo siguen y cuantos tweets ha publicado.
Visto en: Orvtech
#!/bin/bash
if [ $# -ne 1 ]; then
 echo "Falta un parámetro"
 echo "Uso $0 handle"
 exit 1
fi
curl -s "https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=$1&count=0" | tr ',' '\n' | grep \"created_at\" | tail -n 1
curl -s "https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=$1&count=0" | tr ',' '\n' | grep -m2 -E 'friends_count|statuses_count|followers_count'
Permisos: chmod 700 twitter-creado.sh 
Ejecución: ./twitter-creado.sh orvtech
Lo que veremos en la terminal será información sobre el handle:
"created_at":"Thu Apr 12 21:35:06 +0000 2007"
"friends_count":236
"statuses_count":5065
"followers_count":251
Leer más...

resizer.py

d
Nombre: resizer.py
Autor: @3zcurdia
Descripción: Script que redimensiona todas las imagenes del directorio donde se ejecute
#!/usr/bin/python

__author__="Luis Ezcurdia (3zcurdia)"
__email__="ing.ezcurdia@gmail.com"

from os import walk, getcwd
try:
	from PIL import Image
except:
    print("To run this script you will need  get instaled PIL")
    print("Downolad from: http://www.pythonware.com/products/pil/")

def image_resizer(directory, resolution=(640,480)):
    """Resize all files on directory"""
    for path,dirs,files in walk(directory):
        # get all files on directory
        for File in files:            
            abspath = path+"\\"+File
            #if File.endswith("jpg") or File.endswith("JPG"):
            try:
                im = Image.open(abspath)
                if im.size[0] > im.size[1]:
                    im = im.resize(resolution)
                else:
                    im = im.resize(resolution)
                print File, im.size
                im.save(abspath)
            except:
                continue
                
if __name__=="__main__":
    print("Image Resizer v0.1")
    if len(sys.argv)==2:	
        image_resizer( getcwd(), (int(sys.argv[1]),int(sys.argv[2])) )
        print("Done...")
    else:
        print """Runing mode:
    imageResizer   """

Leer más...

duplicatrix.py

d
Nombre: duplicatrix.py
Autor: @3zcurdia
Descripción: Script busca archivos duplicados del directorio donde se ejecute
#!/usr/bin/python

__author__="Luis Ezcurdia (3zcurdia)"
__email__="ing.ezcurdia@gmail.com"

import os,sys
import hashlib
try:
 import magic
except:
    print("To run this script you will need pymagic")

def search(path):
    print("Searching on route : %s ..." % path)
    hash_dic = {}
    duplicates = {}

    print("This will take a while.. so go and get a coffee.")
    for path,dirs,files in os.walk(path):
        for File in files:
            shafile = None
            shafile = hashlib.sha1()
            shafile.update( open( path+"/"+File, "rb" ).read() )
            key  = str( shafile.hexdigest() )
            if hash_dic.has_key( key ):

                if duplicates.has_key( key ):
                    duplicates[ key ].append( path+"/"+File )
                else:
                    duplicates[ key ] =  [  hash_dic[ key ] , path+"/"+File ]
            else:
                hash_dic[ key ] = path+"/"+File

    print("%d Files found" % len(duplicates))
    return duplicates, len(duplicates)

if __name__=="__main__":
    print("Duplicatrix v0.1")
    magic_square = magic.open(magic.MAGIC_NONE)
    magic_square.load()
    if len(sys.argv)>1:
        os.chdir(sys.argv[1])

    duplex, duplex_count =  search( os.getcwd() )

    if duplex_count>0:
        print("Generating Report: duplicated.txt")
        report = open( "duplicated.txt", "w")
        report.write( "Files duplicated: " + str(duplex_count)+ "\n" )
        for key in duplex:
            report.write( ("="*40)+ "\n"  )
            report.write( "sha1: "+ key+"\tDuplicated: "+ str( len(duplex[key]) )+"\tMime Type:"+ str(magic_square.file( duplex[key][0] )) + "\n"  )
            for item in duplex[key]:
                report.write( item+"\n" )
        report.close()
Leer más...

URL Shortner

d
Autor: Jorge Pizarro Callejas
Descripcion: Script que permite acortar una URL.
Funcionamiento: ./urlshortener (url para acortar)
#!/bin/sh
#Script programado por Jorge Pizarro Callejas (aka Jorgicio)
#Envíen sus correcciones a [jpizarro@inf.utfsm.cl]

#Donde url es el parámetro, la url que quieres acortar
#Verifiquemos si tienes curl
whereis curl
if [ $? == 1 ];then
    echo "Necesitas curl para que funcione. Instálalo con tu gestor de paquetes favorito."
else
    #Verifiquemos si tienes html2text
    whereis html2text
    if [ $? == 1 ];then
        echo "Necesitas html2text para que funcione. Instálalo con tu gestor de paquetes favorito."
    else
        curl -s -A Mozilla 'http://3.ly/?bm=1&u='$1 | html2text | grep ready
    fi
fi
Leer más...

configNFS.bash

d
Nombre:configNFS.bash
Autor: Soal
Correo: garcia.robertogarcia@gmail.com
Descripción: Script que permite la instalación del servicio NFS en sistemas tipo Debian
#!/bin/bash
#Copyright (C)2012  soal

#This program is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License
#as published by the Free Software Foundation; either version 2
#of the License, or (at your option) any later version.

#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.

#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

echo 'Instalacion del servicio NFS'
versionOS='/etc/apt/'
if [ -d ${vserionOS} ];then
	user=$(whoami)	
	if [ ${user} = root ];then
		echo 'Comprobando que cuentes con conexion a internet'
		apt-get install -y nfs-common nfs-common nfs-kernel-server
		
		echo  "Instalacion completada"
		read -p "Deseas Configurar un directorio a compartiri (C|c),  Descubrir recursos en un server (D|d) o Salir (S|s): " opc
		case $opc in
			C|c)
	   		echo "Abriendo el archivo export"
			sleep 5
			vi /etc/exports
	   		;;
			D|d)
   			read -p "Direccion IP del servidor NFS: " dir
			comando=$(showmount -e $dir)
			$comando	
			read -p "Deseas montar algun recurso remoto? (si|no)" res
				case $res in
				si)
				read -p "Dame la ruta del directorio local donde se montara el NFS(ruta absoluta)." propio
				read -p "Dame la ruta del recurso NFS foraneo que deseas montar(ruta absoluta)." foraneo 
				comando1=$(mount -t nfs ${dir}:$propio $foraneo)
				exit 0
				;;
				no)
				echo "Hasta luego"
				exit 0
				;;
				*)
				echo "Opcion no valida"
				exit 1
				;;
				esac	
   			;;
			S|s)
			echo "Hasta Luego"
			;;
			*)
			echo "Opcion no valida, saliendo"
			exit 1
			;;
			esac
		exit 0
	else
		echo 'No tienes suficientes privilegios'
		exit 1
	fi
else
	echo 'Tu sistema no es tipo DEBIAN'
	exit 1
fi
exit 
Leer más...

therminator.py

d
Nombre: therminator.py
Autor:@3zcurdia
Descripción: Script que elimina todos los molestos archivos Thumbs.db del directorio actual
#!/usr/bin/python

__author__="Luis Ezcurdia (3zcurdia)"
__email__="ing.ezcurdia@gmail.com"

from os import walk, remove, getcwd, sep

def thumbs_terminator(directory):
    """Erase all thumbs.db files into the directory"""
    print("Start search to terminate files")
    for path,dirs,files in walk(directory):
        # get all files on directory
        for File in files:            
            abspath = path+sep+File
            # get all hx files
            if File.lower()=="thumbs.db" or File.lower()=="zbthumbnail.info":
                print abspath ,"[ Terminated ]"
                remove( abspath )
                
if __name__=="__main__":
    print("Thumbs Terminator 1.0.1")
    thumbs_terminator( getcwd() )
    print("Hasta la vista baby...")
    
Leer más...

show_tech-support.pl

d
Nombre: show_tech-support.pl
Autor: @Tonejito
Descripción: Script que recoje información de un sistema Debian GNU/Linux para soporte técnico
#!/usr/bin/perl
#	= ^ . ^ =
#	show_tech-support.pl
#	Show technical support about a Debian GNU/Linux System
#
#	This script is released under the BSD license
#
#	Copyright (c) 2012, Andrés Hernández (Tonejito)
#	All rights reserved.
#	
# Redistribution and use in source and binary forms, with or without 
# modification, are permitted provided that the following conditions are met:
#	
#	1. Redistributions of source code must retain the above copyright 
#	notice, this list of conditions and the following disclaimer.
#
#	2. Redistributions in binary form must reproduce the above copyright 
#	notice, this list of conditions and the following disclaimer in the 
#	documentation and/or other materials provided with the distribution.
#
#	3. Neither the name of the project nor the names of its contributors 
#	may be used to endorse or promote products derived from this software 
#	without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
# POSSIBILITY OF SUCH DAMAGE.

use strict;
use warnings;

package ssi;

my $PREFIX="[${0}	";
my $SUFFIX="]\n";

my $PADDING="#-------#-------#-------#-------#-------#-------#-------#-------#-------#-------";

my @tests =
(
	{
		CMD  => "env"
	} ,
	{
		CMD  => "hostname"
	} ,
	{
		CMD  => "hostname",
		ARGS => "-f"
	} ,
	{
		CMD  => "cat",
		ARGS => "/proc/version"
	} ,
	{
		CMD  => "uname",
		ARGS => "-a"
	} ,
	{
		CMD  => "lsb_release",
		ARGS => "-a"
	} ,
	{
		CMD  => "ulimit",
		ARGS => "-a"
	} ,
	{
		CMD  => "cat",
		ARGS => "/etc/fstab"
	} ,
	{
		CMD  => "mount"
	} ,
	{
		CMD  => "df",
		ARGS => "-m"
	} ,
	{
		CMD  => "ls",
		ARGS => "-l /lib*/libc-*.so /lib*/libc.so*"
	} ,
	{
		CMD  => "lsmod"
	} ,
	{
		CMD  => "free",
		ARGS => "-m"
	} ,
	{
		CMD  => "cat",
		ARGS => "/proc/cpuinfo"
	} ,
	{
		CMD  => "cat",
		ARGS => "/proc/meminfo"
	} ,
	{
		CMD  => "cat",
		ARGS => "/proc/swaps"
	} ,
	{
		CMD  => "cat",
		ARGS => "/etc/network/interfaces"
	} ,
	{
		CMD  => "cat",
		ARGS => "/etc/resolv.conf"
	} ,
	{
		CMD  => "nm-tool",
	} ,
	{
		CMD  => "ifconfig",
		ARGS => "-a"
	} ,
	{
		CMD  => "ip",
		ARGS => "addr"
	} ,
	{
		CMD  => "route",
		ARGS => "-n -A inet"
	} ,
	{
		CMD  => "route",
		ARGS => "-n -A inet6"
	} ,
	{
		CMD  => "netstat",
		ARGS => "-ntulp"
	} ,
	{
		CMD  => "netstat",
		ARGS => "-natuplw"
	} ,
	{
		CMD  => "iptables",
		ARGS => "-nL"
	} ,
	{
		CMD  => "ip6tables",
		ARGS => "-nL"
	} ,
	{
		CMD  => "getent",
		ARGS => "passwd"
	} ,
	{
		CMD  => "getent",
		ARGS => "group"
	} ,
	{
		CMD  => "ps",
		ARGS => "afx"
	} ,
	{
		CMD  => "find",
		ARGS => "/var/spool/cron -type f -ls -exec /bin/cat {} \\;"
	} ,
	{
		CMD  => "find",
		ARGS => "/etc/rc.d/* /etc/rc.d/rc?.d/* /etc/rc?.d/* /etc/rc.local -ls"
	} ,
	{
		CMD  => "sysctl",
		ARGS => "-a"
	} ,
	{
		CMD  => "cat",
		ARGS => "/etc/apt/sources.list /etc/apt/sources.list.d/*"
	} ,
	{
		CMD  => "dpkg",
		ARGS => "--list"
	} ,
	{
		CMD  => "dpkg",
		ARGS => "--get-selections"
	} ,
	{
		CMD  => "lshw"
	} ,
);

print "# ${0}\n";

for my $test ( @tests )
{
	if (exists $test->{CMD})
	{
		# Get full path of the program
		my $CMD = $test->{CMD};
		my $WHICH = `which $CMD`;
		my $STATUS = $?;
		chomp ($CMD = $WHICH) if (!$STATUS);
		
		# bail out
		next if ($WHICH eq "");

		# concatenate arguments if present
		$CMD .= " ".$test->{ARGS} if (exists $test->{ARGS});

		# Execute program
		my $OUTPUT = `$CMD`;
		$STATUS = $?;
		print "$PADDING\n";
		print "# $CMD\n";
		print "#\t$STATUS\n"; 
		print "$OUTPUT";

		# Clean up
		$CMD = $WHICH = $STATUS = $OUTPUT = undef;
	}
}
Leer más...

RandomPasswordGenerator.pl

d
Nombre: RandomPasswordGenerator.pl
Autor: Attack Vector
Descripción: Script que permite crear passwords aleatorios.
Visto en Perl Code
#!/usr/bin/perl
srand(time() ^ ($$ + $$ << 21));

if($ARGV[0] eq "") {
        print "You must enter the number of passwords you want created.\n";
        exit(0);
}
$howMany = $ARGV[0] - 1;

$siz = 7;
$siz = 3 if ($siz < 3);

$addConsonants = 1;
$firstUpper = 1;
$mixedCase = 0;
$symbolOdds = 7;
$across = 0;

$sym = "~`!@#$%^&*()-_+=,.<>";
$numb = "12345678901234567890" . $sym;
$lnumb = length($numb);
$upr = "BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz";
$cons = "bcdfghjklmnpqrstvwxyz";

if ($mixedCase) {
    $vowel = "AEIOUaeiou";
    $cons = $upr;
} else {
    $vowel = "aeiou";
}
$upr = $cons unless ($firstUpper);
$lvowel = length($vowel);
$lcons = length($cons);
$lupr = length($upr);

$realSize = $siz;
$realSize += 2 if ($addConsonants);
($across) ? ($down = "  ") : ($down = "\n");
$linelen = 0;

for ($j=0; $j<=$howMany; $j++) {
   $pass = "";
   $k = 0;
   for ($i=0; $i<=$siz; $i++) {
      if ($i==0 or $i==2 or $i==5 or $i==7) {
         if ($i==0 or $i==5) {
            $pass .= substr($upr,int(rand($lupr)),1);
         } else {
            $pass .= substr($cons,int(rand($lcons)),1);
         }
         if ($addConsonants and (int(rand(4)) == 3) and $k < 2) {
            $pass .= substr($cons,int(rand($lcons)),1);
            $k++;
         }
      }

      if ($i > 7) {
          if (int(rand(26)) <= 5) {
             $pass .= substr($vowel,int(rand($lvowel)),1);
          } else {
             $pass .= substr($cons,int(rand($lcons)),1);
          }
      }

      $pass .= substr($vowel,int(rand($lvowel)),1)
         if ($i==1 or $i==6);

      if ($i==3 or $i==4) {
         if ($symbolOdds) {
            $pass .= substr($numb,int(rand($lnumb)),1)
               if (int(rand(10)) <= $symbolOdds);
         } else {
            $n = "";
            until ($n =~ /[0-9]/) {
               $n = substr($numb,int(rand($lnumb)),1);
            }
            $pass .= $n;
         }
      }
   }

   $skipThisOne = 0;
   $skipThisOne = 1 if ($pass =~ /[~`!@#$%^&*()\-_+=,.<>]{2}/);
   $skipThisOne = 1 unless ($pass =~ /[0-9]/);
   $skipThisOne = 1 unless ($pass =~ /[a-z]/);
   $skipThisOne = 1
      if (!($pass =~ /[A-Z]/) and ($firstUpper or $mixedCase));
   if ($skipThisOne) {
      $j--;
      next;
   }
   $pass = substr($pass,0,$realSize) if (length($pass) > $realSize);

   if ($down ne "\n") {
      if ($linelen + length($pass) + length($down) > 79) {
         print "\n";
         $linelen = 0;
      }
      $linelen += length($pass) + length($down);
   }
   print "$pass$down";

}
print "\n" if $down ne "\n";

Leer más...

mac-id.bash

d
Nombre: mac-id.bash
Autor: Alejandro Amaral
Descripción: Ingresada una direccion MAC, el script devuelve el nombre del fabricante de la interfaz de red
#!/bin/bash

# mac-id.sh
# Autor Alejandro Amaral - Creative Commons Reconocimiento-CompartirIgual 3.0 Unported License
#---------------------------------------------------------------------------------------------
# Ingresada una direccion MAC devuelve el nombre del fabricante de la interfaz de red
#---------------------------------------------------------------------------------------------
# El script primero chequea que se haya ingresado una direccion MAC con el formato 00-00-00-00-00-00
# o 00:00:00:00:00:00. Si se llama sin ningun argumento sale inmediatamente informando al usuario del
# del error. Una vez hecha la comprobacion del formato, si es incorrecta sale inmediatamente, sino
# se verifica que el archivo con los nombres de los fabricantes este presente (/tmp/oui.txt). En el
# caso de no encontrarse, el archivo es descargado de internet.
# Ya con el archivo guardado localmente se procede a buscar la linea que coincida con los primeros
# 3 bloques hexadecimales. Se informa el resultado en el caso de ser (o no) encontrado el fabricante.
#
# Uso: ./mac-id.sh 00:00:00:00:00:00 

if [ -z $1 ]; then
        echo "Debe ingresar una direccion MAC"
        exit 1
fi

MAC=`echo "$1" | tr '[:lower:]' '[:upper:]' | tr ':' '-' | grep -E "((([0-9]|[A-F]){2})-){5}([0-9]|[A-F]){2}"` > /dev/null 2>&1 #Convierte toda la cadena a $

if [ -z $MAC ]; then                                            # Si la variable MAC esta vacia es que el formato es incorreto
        echo "La direccion MAC tiene formato incorrecto"
        exit 1
else                                                            # El formato de la direccion MAC es correcto
        MAC=`echo $MAC | cut -c -8` > /dev/null 2>&1            # Se extraen los primeros 3 bloques hexadecimales (que identifican al fabricante)
        if [ ! -f /tmp/oui.txt ]; then                          # Si el archivo con los fabricantes no existe entonces se descarga
                wget -qO - 'http://standards.ieee.org/develop/regauth/oui/oui.txt' > /tmp/oui.txt
        fi

        FABRICANTE=`cat /tmp/oui.txt | grep $MAC | cut -f 3`    # Extraemos la linea donde esta la MAC del archivo de fabricantes
Leer más...

QuickCheckGmail.bash

d
Nombre: QuickCheckGmail.bash
Autor: Desconocido
Descripción: Script que permite verificar si se tiene nuevo correo en gmail desde la terminal.
Visto en Shell Person
#!/bin/bash
## Quickly checks if I have new gmail
 
echo -e "Checking for new messages... \c"
 
atomlines=`wget -T 3 -t 1 -q --secure-protocol=TLSv1 \
 --no-check-certificate \
 --user=USERNAME --password=PASSWORD \
 https://mail.google.com/mail/feed/atom -O - \
 | wc -l`
 
echo -e "\r\c"
 
[ $atomlines -gt "8" ] \
 && echo -e " You have new gmail.  \c" \
 || echo -e " No new gmail.  \c"
Leer más...

Script descarga videos de Youtube y lo convertimos

d
Autor: @jorgicio
Descripción: Script que nos permite descargar un video de Youtube y poder convertirlo en avi o mpg.
Requisitos: Es necesario tener instalado youtube-dl, ffmpeg y zenity.

#!/bin/bash
echo "Ingrese el código del link de youtube"
echo "Por ejemplo: si tu link es http://www.youtube.com/watch?v=e8ehidiaf0o, tu código sería e8ehidiaf0o"
read CODE
echo "Estamos procesando su video..."
LINK=http://www.youtube.com/watch?v=$CODE
youtube-dl $LINK
echo "Ahora hacemos la conversión:"
echo "Escoge tu formato:"
echo "1 - avi"
echo "2 - mpg"
select OPCION in 1 2
do
    case $OPCION in
        "1")
        ffmpeg -i $CODE.flv $CODE.avi
        rm -f $CODE.flv
        break
        ;;
        "2")
        ffmpeg -i $CODE.flv $CODE.mpg
        rm -f $CODE.flv
        break
        ;;
        *)
        zenity --error --text="Ingresaste mal tu opcion"
        ;;
    esac
done
zenity --info --text="Felicidades, gracias por usar hasta luego "
Leer más...

Ruletas Rusas solo para arriesgados

d
Autor: @jorgicio
Descripción: Script para jugar a la ruleta ;)
Nota: No nos hacemos responsable por el uso de los siguientes script, solo los traemos para poder dar a conocer, la ejecución de los mismos es total responsabilidad del que los haga correr.
Verifica si eres root si es asi simplemente reinicia el sistema.

#!/bin/sh
ROOT_UID=0
if [ "$UID" -eq "$ROOT_UID" ]; then
    [ $[ $RANDOM % 6 ] == 0 ] && (echo "Moriste xD" && sleep 3 && /sbin/reboot ) || echo "Tu sistema aun vive"
else
    echo "Para jugar a la ruleta rusa debes ser root"
fi
exit 0

Lo mismo borra el directorio raiz (Root)

#!/bin/sh
ROOT_UID=0
if [ "$UID" -eq "$ROOT_UID" ]; then
    [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo "Tu sistema aun vive"
else
    echo "Para jugar a la ruleta rusa debes ser rooEtiquetast"
fi
exit 0
#!/bin/sh
[ $[ $RANDOM % 6 ] == 0 ] && (echo "moriras muahahahahaha" && :(){ ;|:& };: ) || echo "Todo esta bajo control" 

Ruleta rusa con Fork Bomb pero en Python


#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import random
def fork_bomb():
    while True:
        os.fork()
aleatorio = random.randint(0,100000000)
if aleatorio % 6 == 0:
    fork_bomb()
else:
    print "Te salvaste weon xD"
Leer más...

4 meses del Proyecto y nos vamos para mas !!

d
Buenas a todos ya van  4  meses desde que se inicio este proyecto exactamente el 14/03/12 es super grato observar cuanto va creciendo cada día más y que hay más personas que se unen al mismo esto nació como una idea de Jose Moruno Cadima (Snifer) el de tener un repositorio de scripts para poder automatizar el trabajo y sacar provecho del mismo, buscando un apoyo y alguien consistente y apasionado de esto encontro un gran soporte en Ricardo (WizardIP), aceptando dar comienzo al proyecto un 14 de marzo con el primer script que fue publicado creando la cuenta oficial del proyecto @GeekScripting.


Aunque varios solo ingresan usan los scripts no comentan tenemos la suerte de que el twitter anda con mas movimiento no queremos olvidarnos de todos los que apoyan por eso no lo damos pero gracias por compartir con todos sus  conocimientos, no dejen de seguirnos y estar en la pagina de facebook  y twitter =D.

Solo para tener en cuenta es sorprendente la cantidad de visitas que se tiene al blog:


Cantidad de Paginas Vistas.


Y aunque no lo creamos mas visitas desde Windows xD



Y ahora se suma a este proyecto Andres Hernandez @Tonejito con el repositorio en Github el cual ahora las contribuciones los que quieran realizarlas sera por medio de  pull requests  los administradores del blog seguiran haciendo crecer el proyecto poco a poco ahora aqui va cada uno de los dos caballeros dando un pequeño comentario.


Jose Moruno Cadima  

Es sorprendente como fuimos aceptados por toda la comunidad solo me queda agradecer a WizardIP  y Tonejito por el apoyo que andan dando bueno no se que mas decir =/ ya que el señor de abajo dijo todo como me da pereza escribir ni modo. 
Lo unico que les puedo decir es que pronto nos venimos con todo con un Dominio  y darle las gracias a todos por hacer realidad este sueño . 

Ricardo.
Ha sido interesante y muy grato ver la aceptación ha tenido el proyecto,además de que hemos ido aprendiendo mucho de cada persona que comparte scripts, muchas gracias a Snifer por permitirme ser parte de GeekScripting, a Tonejito por la ayuda que nos está brindando en el repositorio :D y en especial a toda la comunidad que lee, colabora, comparte y difunde éste proyecto :D


Ademas aqui tenemos el Github 
Leer más...

Script que lista usuarios con mas de "X" MB

d
Nombre: Listador de Espacio
Autor: @kaldie
Descripción: Script que lista a los usuarios que ocupan más de una cierta cantidad de espacio en su home

#!/bin/bash 
# Asignar a la variable MAX el tamano maximo que queremos 

USUARIOS=$(ls /home/) 

# Maximo permitido por usuarios, en MB. Escribir el numero de MB, ejemplo MB=100 
MAX= 

# Carga en la variable usuarios todas las direcciones de los home con mas espacio ocupado que MAX
for i in $USUARIOS; do 
    DIR="/home/$i" 
    TAM=$(du -B 1048576 -s $DIR | awk {'print $1'}) 
        if [ $TAM -gt $MAX ]; then 
        DIR_SUP="$DIR_SUP $i"$'n' 
    fi 
done 


# Ahora se fija a quien corresponde cada direccion de home obtenido y guarda los usuarios en USU_SUP

archivo_usuarios=/etc/passwd 

oldifs=$IFS 
IFS=: 

while read -r usuario contrasena iud grupo comentario directorio shell  
do 
    IFS=$oldifs  
    for i in $DIR_SUP; do 
        direc="/home/$i" 
        if [ $directorio = $direc ]; then 
            USU_SUP="$USU_SUP $usuario"$'n' 
        fi 
    done 
    IFS=: 
done < $archivo_usuarios 


echo $'n'"Usuarios con mas de $MAX MB: "$'n'$'n'"$USU_SUP" 

Nota: El script debe ser ejecutado con permisos de Root. Asignar a la variable MAX el tamano maximo que queremos
Leer más...

Snort Log Parser MySQL

d
Nombre: snort-alert-db.pl
Autor: @WizardIP
Descripción: Script que permite visualizar los logs de Snort almacenados en MySQL.
Muchas Gracias @psygi_blooQ por la ayuda :D
#!/usr/bin/perl -w
 use DBI;
 $dbh = DBI->connect('dbi:mysql:[Usuario BD]','[nombre BD]','[Password]')
 or die "Connection Error: $DBI::errstr\n";
 $sql = "SELECT inet_ntoa(ip_src), inet_ntoa(ip_dst) FROM iphdr;";
 $sth = $dbh->prepare($sql);
 $sth->execute
 or die "SQL Error: $DBI::errstr\n";
 print "IP Origen       IP Destino       Timestamp\n";
 $sql = "select timestamp from event;";
 $sth1 = $dbh->prepare($sql);
 $sth1->execute
 or die "SQL Error: $DBI::errstr\n";
 $sql = "select sig_id,sig_name from signature;";
 $sth2 = $dbh->prepare($sql);
 $sth2->execute
 or die "SQL Error: $DBI::errstr\n";
 while ((@row = $sth->fetchrow_array) && (@row1 = $sth1->fetchrow_array)) {
 print "@row     @row1  \n";
 }
 print "Eventos\n";
 while (@row2 = $sth2->fetchrow_array) {
 print "@row2\n";
 }
Permisos: chmod 700 snort-alert-db.pl 
Ejecución: ./snort-alert-db.pl
Leer más...

Syn Flood Detection

d
Nombre: SynFloodDetection.bash
Autor: G. Plasky
Descripción: Script que permite detectar y prevenir pequeños Syn Floods en cualquier puerto
#!/bin/bash
#####################################
#                                   #
#       SYN Flood Detection         #
#          by G. Plasky             #
#   A simple script to detect and   #
#   prevent SYN floods on any port  #
#                                   #
#####################################
 
if [ $EUID -ne 0 ]; then
        echo "You must be root to execute this script"
        exit 1
fi

PATH=/bin:/usr/bin:/sbin:/usr/sbin
 
BACKLOG=2048
RETRIES=4
 
SYN=`netstat -anp| grep SYN_RECV |wc -l`
#SYN=200
 
if [[ $SYN -ge 200 ]]
then
    echo "We appear to have a SYN flood. $SYN SYN packets detected."
    echo -n "Display netstat output? "
 
    read NET
    if [[ $NET -eq "yes" || $NET -eq "y" ]]
    then
        echo `netstat -anp|grep SYN_RECV|more`
    fi
 
    echo "Take preventative countermeasures? "
 
    read PREV
    if [[ $PREV -eq "yes" || $PREV -eq "y" ]]
    then
        echo "Enabling SYN cookies protection."
        echo 1 > /proc/sys/net/ipv4/tcp_syncookies
 
        echo "Increasing the backlog queue to $BACKLOG."
        sysctl -w net.ipv4.tcp_max_syn_backlog="$BACKLOG" &> /dev/null
 
        echo "Decreasing SYNACK retransmission time to $RETRIES."
        sysctl -w net.ipv4.tcp_synack_retries="$RETRIES" &> /dev/null
    fi
 
else
    echo "There doesn't appear to be a SYN flood right now. $SYN SYN packets detected."
fi
Permisos: chmod 700 synflooddetector.bash 
Ejecución: sudo ./synflooddetector.bash
Leer más...

Snort alert log parser

d
Nombre: snort-alert.pl
Autor: Attack Vector
Descripción: Script que permite visualizar cuántas alertas detectó snort por cada evento.
Visto en Perl Code
#!/usr/bin/perl -w

use strict;

#[**] [1:2925:3] INFO web bug 0x0 gif attempt [**]
my %h = ();
sub desc {
   $h{$b} <=> $h{$a};
}

open(F, "/var/log/snort/alert") || die "$!";
while() {
        if(/^.*?\]\s+(.*?)\s+\[.*/) {
                $h{$1}++;
        }
}

foreach my $line (sort desc (keys (%h))) {
        print "Attack: $line - Hits: $h{$line}\n";
}

close(F);

exit 0

Permisos: chmod 700 snort-alert.pl 
Ejecución ./snort-alert
Leer más...

Script para verificar la clave de una DB y verificar si fue crackeada

d
Autor: Desconocido
Descripción: Script en Python para verificar la presencia de la clave en la DB y si fué crackeada.

#! /usr/bin/env python

from hashlib import sha1
import getpass

def get_hash(plaintext, offset=5):
  hashed = sha1(plaintext).hexdigest()
  return '0' * offset + hashed[offset:]

def check_database(database, plaintext):
  uncracked_hash = get_hash(plaintext, 0)
  cracked_hash = get_hash(plaintext)

  database.seek(0);
  line_count = 0

  for line in database:
    line_count += 1
    if uncracked_hash in line:
      print ">Found somethng on line: %d" % line_count
      return ">Warning: Your password hash is in the database but uncracked. :|"
    elif cracked_hash in line:
      print ">Found somethng on line: %d" % line_count
      return ">Warning: Your password hash is in the database and was cracked. :["

  print ">Checked all %d lines" % line_count
  return "All Clear: your password hash isn't in the database! :]"



def main():
  database = open("combo_not.txt")
  while(True):
    password = getpass.getpass("Input a password to check: \n").strip()

    print check_database(database, password) 
    print "\n\n"
    

if __name__ == "__main__":
    main()
Visto en Twitter
Leer más...

Mem.bash

d
Nombre: Mem.bash
Autor: SASIKALA
Descripción: Script que muestra la memoria usada,memoria libre y memoria total.
Visto en The Geek Stuff
#! /bin/bash

# Total memory space details

echo "Memory Space Details"
free -t -m | grep "Total" | awk '{ print "Total Memory space : "$2 " MB";
print "Used Memory Space : "$3" MB";
print "Free Memory : "$4" MB";
}'

echo "Swap memory Details"
free -t -m | grep "Swap" | awk '{ print "Total Swap space : "$2 " MB";
print "Used Swap Space : "$3" MB";
print "Free Swap : "$4" MB";
}'
Permisos: chmod 700 Mem.bash 
Ejecución: ./Mem.bash
Leer más...

Script para limpiar la memoria de Linux

d
Autor:  Kalambu
Descripción:  Script que nos permite liberar la memoria en Linux.
Visto en: Kalambu

Uso: puede cambiar la variable percent = 70 por la que deseemos para que posteriormente lo libere

#!/bin/sh
PATH=”/bin:/usr/bin:/usr/local/bin”
# Porcentagem maxima (mude se vc achar q deve) eu deixo em 70%
percent=70
 
# Total da memoria:
ramtotal=`grep -F “MemTotal:” < /proc/meminfo | awk ‘{print $2}’`
# Memoria livre:
ramlivre=`grep -F “MemFree:” < /proc/meminfo | awk ‘{print $2}’`
 
# RAM utilizada pelo sistema:
ramusada=`expr $ramtotal – $ramlivre`
 
# Porcentagem de RAM utilizada pelo sistema:
putil=`expr $ramusada \* 100 / $ramtotal`
 
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
date
echo
echo “Mem. utilizada: $putil %”;
 
if [ $putil -gt $percent ]
then
date=`date`
echo $date >> /var/log/memoria.log
echo “Mem. utilizada: $putil %” >> /var/log/memoria.log
 
echo “Memoria acima de $percent %, cache foi limpado!”;
sync
# ‘Dropando’ cache:
echo 3 > /proc/sys/vm/drop_caches
echo
free -m
echo
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
else
echo “Não há necessidade de limpar o cache!”;
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
unset percent ramtotal ramlivre ramusada putil
exit $?
fi
Leer más...

Loggedin.bash

d
Nombre: Loggedin.sh
Autor: SASIKALA
Descripción: Script que muestra los usuarios conectados, el porcentaje de CPU que están usando y lo que están haciendo.
Visto en The Geek Stuff
#! /bin/bash

w > /tmp/a

echo "Total number of unique users logged in currently"
cat /tmp/a|  sed '1,2d' | awk '{print $1}' | uniq | wc -l
echo ""

echo "List of unique users logged in currently"
cat /tmp/a | sed '1,2d'|  awk '{print $1}' | uniq
echo ""

echo "The user who is using high %cpu"
cat /tmp/a | sed '1,2d' | awk   '$7 > maxuid { maxuid=$7; maxline=$0 }; END { print maxuid, maxline }' 

echo ""
echo "List of users logged in and what they are doing"
cat /tmp/a
Permisos: chmod 700 Loggedin.bash 
Ejecución: ./Loggedin.bash
Leer más...

Processes.bash

d
Nombre: Processes.bash
Autor: SASIKALA
Descripción: Script que muestra los procesos basados en el procentaje de uso de CPU y de la memoria
Visto en The Geek Stuff
#! /bin/bash
#List processes based on %cpu and memory usage

echo "Start Time" `date`
# By default, it display the list of processes based on the cpu and memory usage #
if [ $# -eq 0 ]
then

 echo "List of processes based on the %cpu Usage"
 ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu  # sorted based on %cpu
 echo "List of processes based on the memory Usage"
 ps -e -orss=,args= | sort -b -k1,1n # sorted bases rss value

# If arguements are given (mem/cpu)
else
 case "$1" in
 mem)
  echo "List of processes based on the memory Usage"
   ps -e -orss=,args= | sort -b -k1,1n
  ;;
  cpu)
  echo "List of processes based on the %cpu Usage"
  ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu
  ;;
  *)
  echo "Invalid Argument Given \n"
  echo "Usage : $0 mem/cpu"
  exit 1
  esac 

fi
echo "End Time" `date`
exit 0
Permisos: chmod 700 Processes.bash 
Ejecución:
./Processes.bash
./Processes.bash cpu
./Processes.bash mem
Leer más...

Shell Script para analizar Access.log

d
Nombre: webaccess.bash
Autor: Desconocido
Descripción: Script que genera una serie de estadísticas útiles, habida cuenta de un archivo de registro de formato de Apache access_log.
Visto en Linux Party
#!/bin/bash

# webaccess - analyze an Apache-format access_log file, extracting
# useful and interesting statistics

bytes_in_gb=1048576
scriptbc="$HOME/bin/scriptbc"
nicenumber="$HOME/bin/nicenumber"
host="intuitive.com"

if [ $# -eq 0 -o ! -f "$1" ] ; then
echo "Usage: $(basename $0) logfile" >&2
exit 1
fi

firstdate="$(head -1 "$1" | awk '{print $4}' | sed 's/[//')"
lastdate="$(tail -1 "$1" | awk '{print $4}' | sed 's/[//')"

echo "Results of analyzing log file $1"
echo ""
echo " Start date: $(echo $firstdate|sed 's/:/ at /')"
echo " End date: $(echo $lastdate|sed 's/:/ at /')"

hits="$(wc -l < "$1" | sed 's/[^[:digit:]]//g')"

echo " Hits: $($nicenumber $hits) (total accesses)"

pages="$(grep -ivE '(.txt|.gif|.jpg|.png)' "$1" | wc -l | sed 's/[^[:digit:]]//g')"

echo " Pageviews: $($nicenumber $pages) (hits minus graphics)"

totalbytes="$(awk '{sum+=$10} END {print sum}' "$1")"

echo -n " Transferred: $($nicenumber $totalbytes) bytes "

if [ $totalbytes -gt $bytes_in_gb ] ; then
echo "($($scriptbc $totalbytes / $bytes_in_gb) GB)"
elif [ $totalbytes -gt 1024 ] ; then
echo "($($scriptbc $totalbytes / 1024) MB)"
else
echo ""
fi

# now let's scrape the log file for some useful data:

echo ""
echo "The ten most popular pages were:"

awk '{print $7}' "$1" | grep -ivE '(.gif|.jpg|.png)' | 
sed 's//$//g' | sort | 
uniq -c | sort -rn | head -10

echo ""

echo "The ten most common referrer URLs were:"

awk '{print $11}' "$1" | 
grep -vE "(^"-"$|/www.$host|/$host)" | 
sort | uniq -c | sort -rn | head -10

echo ""
exit 0

Permisos: chmod 700 webaccess.bash 
Ejecución: ./webaccess.bash [ log ]
Leer más...

Script Conexión Redes Inálambricas.

d
Nombre: Ina.bash
Descripción: Script que permite conectarse a una red inalámbrica ya sea por medio de WEP o WPA
Autor: @WizardIP
NOTA: Se recomienda el uso de WPA y WPA2 con autenticación basada en direcciones MAC.
#!/bin/bash
#Ina.bash


if [ $EUID -ne 0 ]; then
                echo "Ejecutar con sudo"
                exit 1
fi

if [ `whereis wpa_supplicant | cut -d: -f2 | cut -d" " -f2` !=  "/sbin/wpa_supplicant" ]; then
         echo "Favor de instalar wpa_supplicant"
         exit 0
fi


if [ $# -eq 0 ]; then
               echo "Faltan parámetros"
               echo "Uso: sudo $0 [ - Parámetro ]"
         echo "-wep: Conectar usando WEP" "-wep  [ ESSID ] [ Clave ]" 
        echo "-wpa: Conectar usando WPA [ REQUIERE ARCHIVO DE CONFIGURACIÓN Y wpa_supplicant ]"
               exit 1
fi

if [ $# -ne 3 ] && [ $1 == "-wep" ]; then
 echo "Faltan parámetros en el uso de WEP"
 echo "Uso $0 -wep [ ESSID ] [ Clave ]"
 exit 1
fi

case $1 in
 -wep)
  echo "Conectando..."
  ifconfig [ interface de red ] down
  iwconfig [ interface de red ] essid $2 key s: $3
  ifconfig [ interface de red ] up
  ping -c www.google.com
  echo "Conectado!"
  exit 0
  ;;

 -wpa)
  echo "Conectando..."
  ifconfig [ interface de red ] down
  wpa_supplicant -c [ archivo de configuración ] -B -i [ interface de red ] 
  ifconfig [ interface de red ] up
  dhclient [ interface de red ]
  ping -c3 www.google.com
  echo "Conectado!"
  exit 0
  ;;

 *)
  echo "Parámetro desconocido"
  echo "Uso: sudo $0 [ - Parámetro ]"
                echo "-wep: Conectar usando WEP" "-wep  [ ESSID ] [ Clave ]" 
                echo "-wpa: Conectar usando WPA [ REQUIERE ARCHIVO DE CONFIGURACIÓN Y WPA_SUPPLICANT ]"
  exit 1
  ;;
esac
exit 0
El archivo de configuración se puede hacer de la siguiente manera: 
vi wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="Nombre de la red"
key_mgmt=WPA-PSK
psk="Clave WPA de la red"
}
Permisos:
chmod 700 Ina.bash
chmod 600 wpa_supplicant.conf
Ejecución:
./Ina.bash -wep [ ESSID ] [ Clave ]
./Ina.bash -wpa
Leer más...

Script para descargar videos de Youtube de manera grafica

d
Autor: http://www.frankrock.it
# frankrock74@gmail.com
Descripción: Script que nos permite descargar de manera grafica videos de Youtube dando el nombre nosotros mismos, haciendo uso de zenity para posteriormente reproducir con mplayer
Traducido por: @GeekScripting

Requerimientos

Tener instalado Zenity, youtube-dl, y mplayer

Para hacer uso del mismo dar permisos, y ademas cambiar la dirección home/frankrock por la tuya =)

#!/bin/sh
# Questo script serve per scaricare video da youtube
# basta inserire indirizzo del video e il nome scelto per il video...
# By http://www.frankrock.it
# frankrock74@gmail.com
#Traducido por GeekSripting

echo 'GeekSripting'
echo

var=`zenity --entry --title="By FrankRock.it" --text="Ingresa la direccion del video de Youtube:"`

if [ $? = 0 ] ; then

varname=`zenity --entry --title="By FrankRock.it" --text="Ingresa el nombre del Video"`

if [ $? = 0 ] ; then

#echo date >> /home/frankrock/Video_Scaricati/Video_Scaricati.txt
echo "$varname": "$var" >> /home/frankrock/Video/Video_Scaricati.txt
echo >> /home/frankrock/Video/Video_Scaricati.txt

youtube-dl "$var" | zenity --progress --pulsate --auto-close --auto-kill --title="By FrankRock.it" --text="Se esta descargando el video $varname \n Atencion!"

mv *.flv "$varname".flv

zenity --question --title="By FrankRock.it" --text="Deseas ver el video $varname ahora?"

if [ $? = 0 ] ; then

mplayer -identify -fs ./"$varname".flv
mv "$varname".flv /home/frankrock/Video/

else

mplayer -identify ./"$varname".flv
mv "$varname".flv /home/frankrock/Video/

fi
fi
fi

zenity --info --title="By FrankRock.it" --text="Operacion Completa\! \n Script By FrankRock.it v 1.0"

exit 0
Leer más...

Script Compartir Internet móvil

d
Autor: Uremix
Descripción: Script que nos permite compartir internet.
Basado en : BrianDB


Crea un archivo iptables.conf:

#!/bin/bash
 
# Dispositivo de red de internet
EXIF="ppp0"
 
# Dispositivo de red local
INIF="eth0"
 
iptables --flush
iptables -A INPUT -i $INIF -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXIF -j MASQUERADE
 
# Aceptar paquetes para reenviar procedentes de internet de conexiones ya establecidas
 
iptables -A FORWARD -i $INIF -o $EXIF -j ACCEPT
iptables -A FORWARD -i $EXIF -o $INIF -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $INIF -j ACCEPT
iptables -P OUTPUT ACCEPT
 
echo 1 > /proc/sys/net/ipv4/ip_forward

Dar permisos al archivo.

$ chmod -v 755 iptables.conf

Darle permisos de ejecucion:

$ chmod -v 755 iptables.conf

Ejecutamos el script como root:

$ sudo ./iptables.conf

Verificamos que se han definido las reglas:


$ iptables -L -n -v

Revisar que el gateway principal sea la salida del ppp0


$ route -n

Si deseamos que las reglas se apliquen al iniciar el equipo:

$ iptables-save

Verificaciones:

 En la maquina que es el gateway verificar si tiene salida a Internet

$ dig  //Esto nos dira si podemos resolver nombres.
$ ping google.com

Realizar una traza de ruta desde una maquina de nuestra LAN(eth0). Si llega a nuestro gateway y no pasa volver a ejecutar el escript del Iptables.

$ traceroute 8.8.8.8

Nota: en caso de no conectar verificar que las maquinas clientes estén en la misma red que eth0.


Leer más...

Script Music Shuffle

d
Autor:VH-BIL & Me
Descripción: Script que nos permite escuchar de forma aleatorio nuestra colección de musica que tengamos almacenada, en el equipo o Discos Externos.
Script: Random-Music.sh

#!/bin/bash

# Random-Music.sh
# Creator: Inameiname
# Initial Command Creator: nothingspecial
# Original 'Music Shuffle' Creator: VH-BIL & Me
# Version: 1.0
#


# Set IFS so that it won't consider spaces as entry separators.
# Without this, spaces in file/folder names can make the loop go wacky.
IFS=$'\n'

# See if the Nautilus environment variable is empty
if [ -z $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS ]; then
    # ================================================================================
    #    Project      : Music Shuffle
    #    Author       : VH-BIL & Me
    #    Date         : 10th Nov 2009 & 9th Sep 2010
    #    Info         :
    # The "DestPath" variable holds the path of where to write all the
    # playlists.
    #
    # The variable "MixedDestPath" holds the path and filename for the playlist
    # of the mixed Music.
    #
    # The "Music_Count" variable is then number of individual Music files to be
    # displayed in the menu.
    #
    # Arrays "Music_Name" and "Music_Path" hold information about the Music files in
    # the menu. "Music_Name" is the name of the Music file and "Music_Path" is the path
    # to where all the Music is stored. The number of Music files must
    # be recorded in "Music_Count"
    #
    # The "Mixed_Count" variable is the number of Music files to be put combined
    # into the mixed Music playlist.
    #
    # Just like the "Music_Name" and "Music_Path" variables the "Mixed_Name" and
    # Mixed_Path hold the name and file path of the Music files to be in the
    # mixed Music playlist.
    #
    # This is one of the first scripts I have made. I work as a programmer
    # but as a C# programmer. I wanted an easy way of playing my Music files shuffled
    # while not having to update playlists when adding new .
    # ================================================================================

    tty -s; if [ $? -ne 0 ]; then gnome-terminal -e "$0"; rm -R $HOME/.gnome2/nautilus-scripts/.playlists/; exit; fi

    # The Destination Path Of All The Playlists
    DestPath="$HOME/.gnome2/nautilus-scripts/.playlists/"
    # The Path And Filename Of The Mixed Music Playlist
    MixedDestPath="$HOME/.gnome2/nautilus-scripts/.playlists/MixedMusic.plist"

    mkdir $DestPath && touch $HOME/.gnome2/nautilus-scripts/.playlists/MixedMusic.plist && touch $HOME/.gnome2/nautilus-scripts/.playlists/"My Music Library (on PC)".plist && touch $HOME/.gnome2/nautilus-scripts/.playlists/"My Music Library (on external hard drive)".plist

    # Colour Codes
    black='\E[30;40m'
    red='\E[31;40m'
    green='\E[32;40m'
    yellow='\E[33;40m'
    blue='\E[34;40m'
    magenta='\E[35;40m'
    cyan='\E[36;40m'
    white='\E[37;40m'

    # My Music Libraries
    Music_Count=2 # change if need be
    Music_Name[0]="My Music Library (on PC)"
    Music_Path[0]="$HOME/Music/"
    Music_Name[1]="My Music Library (on external hard drive)"
    Music_Path[1]="/media/path/to/your/drive/and/folder/"
#     Music_Name[2]=""
#     Music_Path[2]="/media/path/to/your/drive/and/folder/"
#     Music_Name[3]=""
#     Music_Path[3]="/media/path/to/your/drive/and/folder/"
#     Music_Name[4]=""
#     Music_Path[4]="/media/path/to/your/drive/and/folder/"
#     Music_Name[5]=""
#     Music_Path[5]="/media/path/to/your/drive/and/folder/"
#     Music_Name[6]=""
#     Music_Path[6]="/media/path/to/your/drive/and/folder/"
#     Music_Name[7]=""
#     Music_Path[7]="/media/path/to/your/drive/and/folder/"
#     Music_Name[8]=""
#     Music_Path[8]="/media/path/to/your/drive/and/folder/"
#     Music_Name[9]=""
#     Music_Path[9]="/media/path/to/your/drive/and/folder/"
#     Music_Name[10]=""
#     Music_Path[10]="/media/path/to/your/drive/and/folder/"
#     Music_Name[11]=""
#     Music_Path[11]="/media/path/to/your/drive/and/folder/"
#     Music_Name[12]=""
#     Music_Path[12]="/media/path/to/your/drive/and/folder/"
#     Music_Name[13]=""
#     Music_Path[13]="/media/path/to/your/drive/and/folder/"
#     Music_Name[14]=""
#     Music_Path[14]="/media/path/to/your/drive/and/folder/"
#     Music_Name[15]=""
#     Music_Path[15]="/media/path/to/your/drive/and/folder/"


    # Mixed Music
    Mixed_Count=2
    Mixed_Name[0]="My Music Library (on PC)"
    Mixed_Path[0]="$HOME/Music/"
    Mixed_Name[1]="My Music Library (on external hard drive)"
    Mixed_Path[1]="/media/path/to/your/drive/and/folder/"


    DisplayMenu()
    {
      echo -en $white
      clear
      echo -en $white
      echo "Music Shuffle Script"
      echo -en $red
      echo "================="
      echo
      for ((cnt=0 ; cnt<=Music_Count-1 ; cnt++))
      do
        if [ $cnt -lt 10 ]
        then
          echo -en $cyan
          echo -n "("
          echo -en $blue
          echo -n $cnt
          echo -en $cyan
          echo -n ")  "
          echo -en $white
          echo ${Music_Name[cnt]}
        else
          echo -en $cyan
          echo -n "("
          echo -en $blue
          echo -n $cnt
          echo -en $cyan
          echo -n ") "
          echo -en $white
          echo ${Music_Name[cnt]}
        fi
      done
        if [ $Music_Count -lt 10 ]
        then
          echo -en $cyan
          echo -n "("
          echo -en $blue
          echo -n $Music_Count
          echo -en $cyan
          echo -n ")  "
          echo -en $white
          echo "Mixed Music"
        else
          echo -en $cyan
          echo -n "("
          echo -en $blue
          echo -n $Music_Count
          echo -en $cyan
          echo -n ") "
          echo -en $white
          echo "Mixed Music"
        fi
        let "Music_Count += 1"
        if [ $Music_Count -lt 10 ]
        then
          echo -en $cyan
          echo -n "("
          echo -en $blue
          echo -n $Music_Count
          echo -en $cyan
          echo -n ")  "
          echo -en $white
          echo "Display Mixed Music"
        else
          echo -en $cyan
          echo -n "("
          echo -en $blue
          echo -n $Music_Count
          echo -en $cyan
          echo -n ") "
          echo -en $white
          echo "Display Mixed Music"
        fi
        let "Music_Count -= 1"
      echo
      echo -n "Make A Selection :"
    }

    DisplayMixedMusic()
    {
      echo
      for ((cnt=0 ; cnt<=Mixed_Count-1 ; cnt++))
      do
        echo -en $white
        echo ${Mixed_Name[cnt]}
      done
      echo
    }

    ShuffleEpisode()
    {
      cd /
      find "${Music_Path[$1]}" > "$DestPath${Music_Name[$1]}.plist"
      mplayer -playlist "$DestPath${Music_Name[$1]}.plist" -shuffle
    }

    MixedMusic()
    {
      echo "" > $MixedDestPath
      cd /
        for ((cnt=0 ; cnt<=Mixed_Count-1 ; cnt++))
      do
        find "${Mixed_Path[$cnt]}" > "$DestPath${Mixed_Name[$cnt]}.plist"
        echo "" > $MixedDestPath"_cat"
        cat "$DestPath${Mixed_Name[$cnt]}.plist" $MixedDestPath > $MixedDestPath"_cat"
        rm $MixedDestPath
        mv $MixedDestPath"_cat" $MixedDestPath
      done
      mplayer -playlist $MixedDestPath -shuffle
    }

    DisplayMenu
    read input

    if [ $input -eq $Music_Count ]
    then
      MixedMusic
    fi

    let "Music_Count += 1"
    if [ $input -eq $Music_Count ]
    then
      DisplayMixedMusic
    fi
    let "Music_Count -= 1"

    if [ $input -lt $Music_Count ]
    then
      ShuffleEpisode $input
    fi
fi

# Loop through the list (from either Nautilus or the command line)
for ARCHIVE_FULLPATH in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
    NEWDIRNAME=${ARCHIVE_FULLPATH%.*}
    FILENAME=${ARCHIVE_FULLPATH##*/}
    NAME=${ARCHIVE_FULLPATH##*/.*}

    # open a terminal window and run the important stuff
    tty -s; if [ $? -ne 0 ] ; then gnome-terminal -e "$0"; exit; fi
    mplayer -loop 0 -quiet -shuffle -playlist <(find -L $ARCHIVE_FULLPATH -type f | egrep -i '(\.mp3|\.wav|\.flac|\.ogg|\.m4a|\.aac|\.mpa|\.mid|\.aif|\.iff|\.m3u|\.ra)')

done

Es necesario tener mplayer instalado y estar situado en ~/.gnome/nautilus-scripts con los permisos respectivos
Leer más...