Scripts en BASH

Iniciado por -EvilBuffer-, 21 Enero 2005, 09:33 AM

0 Miembros y 1 Visitante están viendo este tema.

-EvilBuffer-

Porque no ponene retos o ejemplos de uno que otro script en BASH, bueno yo subire uno que otro, aver si la raza se anima a subir sus retos o ejemplos, este es un pequeño ejemplo para chekar que no haya usuarios tipos root, nota solamente root debe tener 0 0

#!/bin/bash
# para chekar que no haya usuarios tipo 'root'
awk -F: '{print $1" "$3" "$4 }' /etc/passwd | grep -w 0

este es script puede ser modificado para mejorarlo, como por ejemplo si en la ejecucion del script saliera infiltrado 0 0, podiamos elimiarlo de /etc/passwd
<< RTFM && STFW >>

situ

Buenas les dejo un par de script que hice para el mantenimiento de mi linux y aparte para aprender sobre el lenguaje.
Seguramente tendre algunos codigos de mas, pero bueno estoy aprendiendo sobre el tema.

Whois Customizado by s!tu

#!/bin/sh
clear
echo -e "\033[1;31mWhois Customizado by s!tu \033[0m";
echo -e "\033[1;33mEscriba la direccion IP: \033[0m";
read IP
echo -e "\033[1;33mSeleccione el server de Whois: \033[0m";
echo -e "0. salir";
echo -e "1. Lacnic";
echo -e "2. Arin";
echo -e "3. Apnic";
echo -e "4. Ripe NCC";
echo -e "5. Afrinic";
echo -e "\033[1;34mOpcion: \033[0m";
read MEN
case $MEN in
0)
exit 1
;;
1)
WH="whois.arin.net"
;;
2)
WH="whois.arin.net"
;;
3)
WH="whois.apnic.net"
;;
4)
WH="whois.ripe.net"
;;
5)
WH="whois.afrinic.net"
;;
*)
exit 1
;;
esac
echo -e "\033[1;32mParceo de resultado: \033[0m";
echo -e "0. salir";
echo -e "1. netname";
echo -e "2. contacto";
echo -e "3. red";
echo -e "4. netname - contacto";
echo -e "5. sin parceo";
echo -e "\033[1;34mOpcion: \033[0m";
TEMP=`whois -h $WH $IP`
RES=`echo -e "\033[1;36mResultado: \033[0m$IP";`
read MENU
case $MENU in
0)
exit 1
;;
1)
echo "$RES"
echo "$TEMP" | grep netname
exit 1
;;
2)
echo "$RES"
echo "$TEMP" | grep "e-mail"
exit 1
;;
3)
echo "$RES"
echo "$TEMP" | grep inetnum
exit 1
;;
4)
echo "$RES"
echo "$TEMP" | grep netname
echo "$TEMP" | grep "e-mail"
exit 1
;;
5)
echo "$RES"
echo "$TEMP"
exit 1
;;
*)
echo -e "Informacion incorrecta"
;;
esac
read

situ

mas codigos.
Este es un soft para usarlo en debian, ubuntu o alguna otra distro que soporte apt-get.

APT-TOOLS

#!/bin/bash
#Fecha 11-03-2006
#Autor: situ
#Licencia GNU-GPL
#Tomado parte del ubuntusetup de ryan (ubuntu-geek)
echo -e "\033[1;32m----------- Opciones -----------\033[0m";
echo "1 -> Instalar paquetes";
echo "2 -> Ver paquetes instalados";
echo "3 -> Actualizar el sistema";
echo "4 -> Buscar paquete";
echo "5 -> Eliminacion automantica de paquetes viejos";
echo "6 -> Chequear Dependencias";
printf "\033[1;32m\tOpción >> \033[0m";
read PAK
case $PAK in
1)
printf "\033[1;30mNombre del Paquetes a instalar: >>\033[0m";
read PAKN
if [ "$PAKN" = "" ];then
exit 1
else
sudo apt-get install $PAKN
fi
;;
2)
printf "\033[1;30mEscriba aqui el nombre de algun paquete que desea ver si lo tiene isntalado: >> \033[0m";
read PAKN
if [ "$PAKN" = "" ];then
exit 1
else
echo -e "\033[1;30mTiene el/los siguiente/s paquete/s: >>\033[0m";
sudo dpkg -l | grep $PAKN | awk '{print $2}' | nl -s " - "
fi
;;
3)
echo -e "\033[1;30mSe va actualizar el sistema\033[0m";
sudo apt-get upgrade && sudo apt-get dist-upgrade
;;
4)
printf "\033[1;30mNombre del Paquetes a buscar: >> \033[0m";
read PAKB
if [ "$PAKB" = "" ];then
exit 1
else
echo -e "\033[1;30mID ->\tPaquete\t -  Comentario:\033[0m";
apt-cache -v search $PAKB | nl -nrz -w3 -s " -> " | more
busqueda=(`apt-cache search $PAKB | cut -f1 -d " "`)
printf "\033[1;30mID del paquete que va instalar >>\033[0m";
fi
read PAKN
$(PAKN=0)
if [ ! -z "$PAKN" ]; then
echo -e "\033[1;30mInstalando el paquete $PAKN -> \033[0m" ${busqueda[$PAKN-1]};
sudo apt-get install ${busqueda[$PAKN-1]}
fi
;;
5)
echo -e "\033[1;30mSe eliminaran paquetes viejos automaticamente\033[0m";
sudo apt-get autoclean
;;
6)
echo -e "\033[1;30mSe chequearas si hay dependencias corruptas y si las hay se arreglaran\033[0m";
sudo apt-get -f check
;;
*)
exit 1
;;
esac

situ

Estado de mi PC.
Ojo que puede ser que algunas cosas no anden porque muchas veces difieren cosas entre las distros, cualquier cosa dejen el mensaje y lo vemos.

ESTADO DEL LINUX

#!/bin/sh
UPT=`uptime | awk '{print $1" "$2" "$3}' | sed s/,//g`;
MEMTO=`cat /proc/meminfo  | grep "MemTotal" | awk '{print $2}'`;
ES=`date`;
QUIEN=`whoami`
KER=`uname -r`
MEM=`cat /proc/meminfo  | grep "MemFree" | awk '{print $2}'`
echo -e "\033[1;33mEstado de la PC by s!tu \033[0m";
echo -e "\033[1;32mBienvenido:\033[0m $QUIEN";
echo -e "\033[1;32mHoy es:\033[0m $ES";
echo -e "\033[1;32mUptime:\033[0m $UPT";
echo -e "\033[1;32mMemoria Total $MEMTO kB:\033[0m Memoria Libre: $MEM kB";
echo -e "\033[1;32mVersion del kernel utilizado en el sistema:\033[0m $KER";


Erik#

Bueno, este script que hice y deje en el subforo scripting, trata de un sistema que identifica la cantidad de usuarios en el sistema y sus nombres:

Código (bash) [Seleccionar]
#!/usr/bin/bash
# Creado por erik - youareowned@hotmail.es
conectados=`who | cut -f1 -d ' ' | sort -u | wc -l | sed 's/^ *//g'` 
nombres=`who | cut -f1 -d ' ' | uniq | sed 's/^ *//g'`
echo "Usuario(s) conectado(s): $conectados"
echo "Nombre(s): $nombres"

^Tifa^

Otro cortito

Código (perl) [Seleccionar]


#!/bin/sh -x

function Backup() {

  cd $HOME && mysqldump --opt --user=$1 --password=$2 $3 > backup-$(date +%Y+%m+%d).sql
  echo "Backup Realizado y guardado en $HOME bajo el nombre backup-$(date +%Y+%m+%d).sql"

}

function Usuarios {

  w
}

while [ "$opcion" != '4' ]; do

echo -e "Que desea hacer\n1 - Backup de la DB\n2 - Ver usuarios conectados\n3 - Salir\n"
read opcion

  case $opcion in
  1)

    echo "Inserta el nombre de usuario, contrasena y DB separado por espacio :: "
    read algo

      Backup $algo
  ;;
  2)
  Usuarios
  ;;
  3)
  break
  esac
 
done

exit $?

leogtz

@^TiFa^

No le veo utilidad a esta función:

function Usuarios {

  w
}


Directamente podrías usar el comando w y ya.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

^Tifa^

Si es cierto... de hecho a la larga podria obviar todas las funciones y colocar cada comando debajo de su respectivo Case.