[precedente] Webminator - Copertina - Indice [successivo]

Articoli


Tips & Tricks

rpm2html

Ecco un semplice script che vi permetterà di creare un file .html contenente le informazioni dei file .rpm contenuti in una directory o magari in un CDROM

Per questioni di .html il sorgente è nel file cont.sh.txt.


3c5x9

Per chi ha problemi con la scheda di rete 3c5x9 ecco qui la soluzione:
http://cesdis.gsfc.nasa.gov/linux

In questa directory troverete il file 3c5x9setup.c che vi permetterà di cambiare il settaggio della vostra scheda di rete senza dover passare da WinX.


Automatizzare l'ftp

Ecco un piccolo script che potrete utilizzare per automatizzare lo scaricamentodi un file. Magari lo potete richiamare via cron.

#!/bin/sh
LOG=/tmp/autoftp.log
ftp -n -i ftp.somehost.com <<-@EOB &> $LOG
user anonymous jose@haulpak.com
bin
cd /pub/scisy
ls
get gg.zip
cd /incoming
put somefile.txt
bye
@EOB
exit 0

PINGHIAMO

Ecco un semplice script per vedere se una macchina e raggiungibile, utilizzando il semplicissimo ping.

#!/bin/sh
ping -c 2 localhost
if [ $? != 0 ] ; then
    echo "Something is seriously wrong.....  :-)" #This obviously should work
    fi
ping -c 2 nowhereoutthere.com
if [ $? != 0 ] ; then
    echo "Sorry, I couldn't ping that IP address..." #No such animal
    fi

Numeri casuali

Ecco un semplice shell-script che ritorna dei numeri pseudo-casuali.

##########################################################################
# Shellscript:	rand - return random number
# Version    :	0.2 (beta)
# Author     :	Heiner Steven (heiner@darwin.noris.de)
# Date       :	09.02.95
# SCCS-Id.   :	%Z% %M%	%I% %D%
##########################################################################
# Description
#	Uses the date and the process id to calculate a random number
# Changes
# 28.09.95 stv	Random numbers cannot be maxvalue+1 (0.2)
##########################################################################

PN=`basename $0`			# program name
VER='0.2 (beta)'

MaxRand=32766

Usage () {
    echo "$PN - return random number, $VER (stv '95)
usage: $PN [maxvalue]

Prints a random value (1 <= random <= maxvalue) to standard output.
If no maximum value is specified, `expr $MaxRand + 1` is the default" >&2
    exit 1
}

Msg () {
    for i
    do echo "$PN: $i" >&2
    done
}

Fatal () { Msg "$@"; exit 1; }

while [ $# -gt 0 ]
do
    case "$1" in
					# Your flags here
	--)	shift; break;;
	-h)	Usage;;
	-*)	Usage;;
	*)	break;;			# First file name
    esac
    shift
done

if [ $# -gt 1 ]
then Usage
elif [ $# -eq 1 ]
then
    if expr $1 + 0 > /dev/null 2>&1
    then Max=$1
    else Fatal "illegal number: $1"
    fi
fi
: ${Max:=$MaxRand}			# Use default value

set -- `date '+%H %M %S'`
[ $# -ne 3 ] && Fatal "could not invoke program date"

n=`expr $$ \* $1 \* $2 \+ $3`
exec expr \( $n % $Max \) + 1

Shutdown

Visto che non si smette mai di imparare ecco un semplice modo per fare lo shutdown della macchina:

/sbin/init 0

DefaultColorDepth

Forse non tutti sanno che è possibile dire al Server X di partire con una certa profondità di colore senza dover stravolgere il file XF86Config. Basta aggingere
DefaultColorDepth profondità
alla sezione "Screen" della propria macchina.


ZOMBIE

Ecco un semplice schema per prevenire (nella programmazione) l'effetto zombie

     if (pid=fork())
     {
        waitpid(...);
     }
     else
     {
        if (fork())
        {
           exit(0);
        }
        else
       {
           setsid();

           ... child process code here ...
        }
     }

Programmare il Modem

Ok, non è proprio un tips per tutti, ma per chi vuole capire come colloquiare con una seriale (in questo caso il modem) ecco il modo giusto nel file modem.c. Peccato che non l'abbia scritto io, mi sarebbe valso l'Oscar. :)


Cambio nome

Molte volte è necessario cambiare il nome ad una serie di file equesto viene fatto con il comando mv. Ma quando il nomenuovo deve essere quello vecchio con l'agguinta di un numero? Be', ecco la soluzione in 2 versioni:

     ls *.rgb | awk '
          {
          filnam=$0
          n1=split(filnam,tmp2,".")
          fnum=substr(tmp2[1],index(2[1],/[0-9][0-9]*/),length(tmp2[1]))
          fnam=substr(tmp2[1],1,index(2[1],/[0-9][0-9]*/)-1)
          fnum=sprintf("%i4",fnum)
          filnam_new=path "/" fnam fnum "." tmp2[2]
          print "mv "$0" "filnam_new
          }' > mv.sh

Questo semplice script crea il file mv.sh che prende in input l'estensione dei file che si vogliono rinominare (in questo casa .rgb) e in automatico seleziona i file e li rinomina. Vi è una unica pecca, non scorre le directory. Ecco un compito a casa... :) La seconda versione è:

    ls -f | perl -lne ' \
        $old = $_; \
        s/^anka(\d+)\.rgb$/sprintf "anka%04d.rgb", $1/e; \
        rename $old, $_ unless -e'

Anche in questo caso come vedete l'estensione di default è rgb. Ok è un po' lungo da ricordare, ma se qui vi è un perl hacker allora mi mandi una versione riveduta e corretta e sarò felice di metterla sul prossimo numero.


Mostrare le parole

Ecco 2 alternative per mostrare le parole di un file e quante volte essi compaiono.

cat textfile | perl -pe 's/(^\s+|\s+$)//g;s/\s+/\n/g;' | sort | uniq -c
cat textfile | awk '{ for (i=1;i<=NF; i++) ++W [$i] } END { for ( k in W ) print k, W [k] }' "$@"

File più vecchi?

Ecco un semplice script di shell che vi dice su 2 file a vostra scelta hanno la stessa data di creazione.

#!/bin/sh
if [[ ! ($1 -nt $2 || $1 -ot $2) ]];then echo ok;else echo bad;fi

di ZioBudda


[precedente] Webminator - Copertina - Indice [successivo]