Util

Por Paco Aldarias Raya

Impreso: 28 de abril 2006

Email: pacolinux arroba inicia punto es

Web: http://aldarias.es/pacodebian

Con Linux Debian. En Valencia (España)

El documento tiene version .html, y .pdf, cambiando en el navegador la parte final podrás acceder a ambos.

Este documento es de libre reproducción siempre que se cite su fuente.

Realizado con: LATEX

Índice General


1 Mantener un proceso al cerrar la terminal

Si quieres que no se muera un proceso, cuando cierres el terminal, se lanza con:
nohup mldonkey &


2 Para ver los directorios que cuelgan

Instalar:

apt-get install tree

Usos:

tree
tree carpeta
tree -dfi directorio


3 Una forma rapida de imprimir nuestros correos: mp

Esto es para cuentas imap. Coge todos los correos de /home/paco/Maildir/.hotmail/cur/ y genera un fichero correo.ps

mp -a4 -postscript  -organiser franklinp -columns 1 \
-left 80 \
/home/paco/Maildir/.hotmail/cur/* > ~/correo.ps

kghostview ~/correo.ps &

4 Configurar el entorno gráfico

xf86cfg -textmode

5 Hacer que se abra y cierre el cdroom

eject /dev/cdrom; sleep 10s; eject -t /dev/cdrom

6 Dejar el sistema limpio

Esto permimte limpiar los ficheros desistalados:

dpkg --purge $(dpkg -l | grep ^rc | cut -d" " -f3)

7 Abrir varios entornos gráficos: startx

Suponiendo que estamos en el entorno gráfico normal de kde. Pulsamos control+alt+f2, se abrirá un consola de texto, y ponemos:

startx -- :1
esto abrirá otro entorno grafico.

Para regresar al anterior pulsarmos: Pulsamos control+alt+f2, se abrirá un consola de texto, y pulsarmos Alt + F7

Para regresar al anterior pulsarmos: Pulsamos control+alt+f2, se abrirá un consola de texto, y pulsarmos Alt + F8

8 Saber la ip desde consola

INET_IP=`/sbin/ifconfig eth0 | grep "inet addr:" | awk '{print $2}' | cut -c  6-`
echo $INET_IP

Se puede tb saber la ip consultando una pagina web http://www.whatismyip.com/, y viendo la ip que pone:

cat ip.sh

wget http://www.whatismyip.com/
INET_IP=`cat index.html | grep "Your IP is" | awk '{print $5}' | cut -f1 -d  "<"`
echo $INET_IP

9 Comprobar el iso con el md5

El valor: md5sum -c fichero.iso

Debe coincidir con: fichero.md5.asc

10 Controlar máquinas con ip dinámica

Te creas una cadena propia para detectar las conexiones al servidor FTP:

iptables -N entradaftp

Configuras el firewall para pasar las conexiones al servidor FTP por una cadena en especial:

iptables -t filter -A INPUT -i ppp0 -m tcp -p tcp --dport 21 -j entradaftp

En cron configuras un script que se ejecute cada x minutos:

*/5 * * * *        root        /usr/local/sbin/firewallftp.sh

Y el script que debes crear debe ser algo como:

#!/bin/bash
IPTABLES=/sbin/iptables
TABLA=entradaftp
AMIGOS="amigo1.no-ip.org amigo2.no-ip.org"

# Vaciamos las reglas antiguas
iptables -F $TABLA
for host in $AMIGOS
do
        $IPTABLES -A $TABLA -s $host -j ACCEPT
done

Todo esto funciona si en INPUT tienes como regla por defecto DROP para evitar el "pequeño" intervalo de actualización que permitiría conexiones no deseadas.

Es un ejemplo. O cómo configuro nfs para permitirle montar mis particiones compartidas de forma segura y fiable?

Puedes montar un servidor NIS por ejemplo. O usar lo mismo que antes para el FTP para NFS.

11 Cambiar la resilucion de imagenes jpg

Instalar:

apt-get install libjpeg-progs

Ejecutarlo:

djpeg < foo.jpg | cjpeg -quality 50 > bar.jpg

12 Saber si cambia una web

#!/bin/sh

URL='http://ww1.msc.es/insalud/oposicionesytraslados/rrhh/consolidacion/puntuaSNF/ConsSNF_puntos.htm'
FICH_BASE='base.html'
FICH_NUEVO='nuevo.html'
MAIL='manocfQUITA-ESTO@terra.es'

if [ -f $FICH_BASE ];
then
 wget -q $URL -O $FICH_NUEVO
 diff $FICH_BASE $FICH_NUEVO > /dev/null
 if [ $? -ne 0 ];
 then

  # Aviso por consola
  #echo "¡La web a sido modificada!" 

  # Aviso con mensaje en las X
  #xmessage -center "¡La web a sido modificada!"

  # Aviso por correo
  #echo "¡La web a sido modificada!" | mail $MAIL
  
  mv -f $FICH_NUEVO $FICH_BASE
 else
  rm -f $FICH_NUEVO
 fi
else
 wget -q $URL -O $FICH_BASE
fi

13 Evitar lanzar un programa varias veces

#!/bin/sh
RUNFILE=/var/run/test.pid
if [ -e "$RUNFILE" ]; then
        echo "$0: Ya estoy corriendo, para eliminar este mensaje ejecuta:\
 kill `cat ${RUNFILE}`"
        exit 1
fi

trap "rm -f $RUNFILE" EXIT
echo "$$" > $RUNFILE
echo "$0: mátame para terminar este proceso.\
Soy el proceso: `cat ${RUNFILE}`"
while (`true`); do
        sleep 5
        echo -n '.'
done
exit 0

14 Para levantar algun demonio caido

PID=`ps -uxcaw | grep 'named' | awk '{ print $2 }'`

   if [ "$PID" == "" ]; then
    /usr/sbin/named
   fi

15 Obtener el man de forma bonita

En modo texto

cat man.sh

#!/bin/sh
ARGS=2
EXIT_BADARG=65

if [ $# != $ARGS ]
then
        echo "Uso: `basename $0` pagina_de_manual archivo_de_texto"
        exit $EXIT_BADARG
fi

MANPAGE=$1
TEXTO=$2
`man $MANPAGE | col -xb > $TEXTO`
ok=$?
if [ $ok != 0 ]
then
        echo "Hubo un error. Nro de error $ok"
        exit $ok
else
        exit 0
fi
else
        echo "No existe la pagina de manual de  $MANPAGE"
        exit 1
fi

En formato ps y pdf

man man | col -b | groff > resultado
gv resultado.ps
ps2pdf resultado.ps

En formato html con konqueror:

man:/man

16 Apagar el pc si no hay impresion ni usuarios

#!/bin/bash
LOG=/var/log/shutdown.auto
# obtener el numero de usuarios que hay usando el sistema
((NUMERO_USUARIOS = `users | wc -w`))

((HAY_COLA_IMPRESION = `lpq | grep -i "no entries" | wc -l` == 0))
# tenemos un cero si la cola está vacia

echo Numero de usuarios en el sistema: $NUMERO_USUARIOS
echo Hay trabajos en la cola de impresión: $HAY_COLA_IMPRESION

apagar() (
        echo apagado automático del sistema  / `date` / >> $LOG
        halt
)

((NUMERO_USUARIOS <= 0)) && ((HAY_COLA_IMPRESION <= 0)) && apagar >> $LOG

17 Pasar un fichero pdf a txt y sacar las imagenes

f=fichero.pdf
t=imagen
pdftotext $f
pdfimages -j $f $t
f=$(ls $t*.pbm)
for i in $f 
do
convert $i $i.jpg
done

18 Proteger un fichero pdf con contraseñas

pdftk $1.pdf output $1a.pdf owner_pw passroot user_pw passuser allow printing

19 Script para saber los recursos del pc

#!/bin/bash
# Por Paco Aldarias.
# 12.4.06
# recursos.sh
echo "********************************************************************************************"

h=$(hostname)
echo "* NOMBRE PC [$h]"

kernel=$(uname -mnrs)
tpo=$(uptime | cut -d "," -f1)
usu=$(users)
echo "* TIEMPO [ENCENDIDO $tpo] [USUARIOS: $usu] [KERNEL: $kernel]"

cpui=$(cat /proc/cpuinfo | grep "model name" | tail -f -n 1 |  cut -c 14-)
usuario=$(atsar -u 1 3 | tail -n 1 |  awk -F " " '{print $2}')
sistema=$(atsar -u 1 3 | tail -n 1 |  awk -F " " '{print $4}')
total=$(expr $usuario + $sistema)
echo "* CPU: [$cpui]  [Usuario: $usuario %] [Sistema $sistema %] [Total: $total %]"

memt=$(/usr/bin/free | grep "Mem" | awk -F " " '{print $2}')
memf=$(/usr/bin/free | grep "Mem" | awk -F " " '{print $3}')
mems=$(/usr/bin/free | grep "Swap" | awk -F " " '{print $2}')
echo "* MEMORIA: [Total $memt] [Fisica usada: $memf] [Swap usada: $mems]"

ip0=`/sbin/ifconfig eth0 | grep "inet addr:" | awk '{print $2}' | cut -c  6-`
mac0=`/sbin/ifconfig eth0 | grep "HWaddr" | awk '{print $5}'`
ad0=$(lspci  | grep Ethernet | sed -e 2d | cut  -c 35-)
/usr/sbin/iptotal -r 5 eth0 > iptotal.txt
in0=`cat iptotal.txt |  awk '{print $5}'`
out0=`cat iptotal.txt |  awk '{print $8}'`
echo "* RED ETH0: [IP: $ip0] [MAC: $mac0] [Tarjeta: $ad0] [Entra: $in0 KB/s] [Sale: $out0 KB/s]"

ip1=`/sbin/ifconfig eth1 | grep "inet addr:" | awk '{print $2}' | cut -c  6-`
mac1=`/sbin/ifconfig eth1 | grep "HWaddr" | awk '{print $5}'`
ad1=$(lspci | grep Ethernet | sed -e 1d | cut  -c 35-)
/usr/sbin/iptotal -r 5 eth1 > iptotal.txt
in1=`cat iptotal.txt |  awk '{print $5}'`
out1=`cat iptotal.txt |  awk '{print $8}'`
echo "* RED ETH1 [IP: $ip1]  [MAC: $mac1] [Tarjeta: $ad1]  [Entra: $in1 KB/s] [Sale: $out1 KB/s]"

ps aux  > procesos.txt 2>/dev/null
total=`wc -l < procesos.txt`
total=`expr $total - 1`
ps aux  | grep root  > procesos.txt 2>/dev/null
root=`wc -l < procesos.txt`
root=`expr $root - 2`
echo "* PROCESOS: [total: $total] [Root: $root]"
#cat top.txt | sed -e '1,7d' | head -f 1

hda1t=$(df | grep hda1  | awk '{print $2}')
hda1u=$(df | grep hda1  | awk '{print $3}')
hda1d=$(df | grep hda1  | awk '{print $4}')
echo "* HDA1: [total: $hda1t] [Usado: $hda1u]  [Disponible: $hda1d] "
echo "********************************************************************************************"

Índice de Materias

mp
3
nohup
1
tree
2

Sobre este documento...

Util

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html util -split 0 -local_icons 1 -show_section_numbers -no_auto_link -no_navigation

The translation was initiated by on 2006-04-28


2006-04-28