giovedì 12 febbraio 2009

OpenWRT/Squidge: generare UUID univoca

Sotto linux talvolta si trova la comodita' di avere qualcosa di generato univocamente. Ad esempio un codice uuid esadecimale sufficientemente lungo, capita ad esempio negli script della shell per avere una directory semaphore univoca.
Di solito si puo' usare l'opportuno comando uuidgen, ma per esempio nello sviluppo di script sotto OpenWRT (sto lavorando con Squidge 1.7) non si ha a disposizione e non e' semplicissimo compilare un applicativo per mipsel al volo.
Tuttavia ci aiuta lo scripting, in tal senso, e con un paio di righe di sh si risolve il problema in maniera pulita. Ecco come ho fatto io [usate la riga echo nello script oppure salvate con "#!/bin/sh" un file (esempio /sbin/uuidgen) e rendetelo eseguibile]:
#!/bin/sh
echo $(dd if=/dev/urandom bs=16 count=1 2>/dev/null|hexdump|tr -d '\n'|awk '{
  printf "%s%s-%s-%s-%s-%s%s", $2, $3, $4, $5, $6, $7, $8;
}')
Con la speranza che sia utile anche ad altri
[English abstract follow]
The above script is useful to generate a (general valid) UUID number for shell scripts on Squidge (and other OpenWRT based OSes) without having to compile for uuidgen. Hope may be useful (-:

0 commenti: