Normalmente al ejecutar un comando en un sistema remoto usando rsh, el código de retorno es el de la propia ejecución de rsh.
Si queremos recibir el código de error del comando remoto podemos usar la sintaxis siguiente:
$res=`rsh 172.16.1.5 'comando >>/dev/null 2>&1; echo \$?'`;
Para evitar que nuestro guión quede bloqueado en una porción de código si, por ejemplo una ejecución remota no responde, podemos usar el siguiente método.
# asocia una funcion al vencimiento del temporizador $SIG{ALRM} = \&temporizador; $time=2; eval { alarm($time); ... # codigo protegio ... alarm(0); }; if ($@ =~ /Vencio el temporizador/){ print "Salgo por temporizacion\n"; }else{ print "Salgo con codigo: $res\n"; } sub temporizador { # tratamiento de temporizador die "Vencio el temporizador"; }
Usando la función sleep se puede conseguir retardos en los guiones, pero solo en segundos. Para conseguir retardo en periodos inferiores al segundo, o retardos en milisegundos, podemos usar la siguiente sintaxis:
select(undef,undef,undef,0.250);
Que no dara un retardo de 250 msg.
No debemos olvidar que estamos trabajando bajo Unix, y por tanto el sistema no nos asegura la exactitud del retardo. Vamos que esto no es tiempo real.
Para sustituir una cadena de caracteres por otra sobre el mismo fichero, conservando una copia de seguridad, podemos usar el siguiente guión:
/usr/bin/perl -p -i.back s/antigua/nueva/g;
Si en algun momento queremos enviar una clave por correo, por ejemplo para que nos habran una cuenta en una maquina, seria absurdo enviarla en claro. Cualquiera, incluso la persona a la que se la enviamos, podria anotarla y de esta forma nuestra cuenta no estaria protegida.
Para evitar estos problemas podemos enviarla encriptada usando el siguiente codigo:
perl -e 'print crypt( shift, shift), "\n"' password salt