elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11
71  Programación / Scripting / Re: CPAN Linux reinstalar en: 10 Abril 2015, 15:30 pm
El Perl oficial es el v5.14.2, ese es el que hay que salvar.

El que sea más o menos fácil quitar el v5.18.1 depende de cómo haya sido instalado. Como veo que está en /usr/local... puede que sea muy fácil, con solo cambiar de nombre o eliminar los directorios del v5.18.1.

Una vez hecho eso, entrar en aptitude y solicitar la reinstalación de perl y perl-base.
72  Programación / Scripting / Re: CPAN Linux reinstalar en: 9 Abril 2015, 17:17 pm
1- No se te ocurra ejecutar el comando cpan salvo que seas el usuario root
2- Antes de instalar algo con cpan, ejecuta el aptitude para ver si lo que quieres instalar ya estaba paquetizado (también como root, claro)

Si te dice que un usuario normal no puede acceder a feature.pm, significa que el directorio donde está ese módulo no es accesible a ese usuario, seguramente por temas de permisos.

/usr/local/lib/perl5/5.18.1/feature.pm
/usr/share/perl/5.14.2/feature.pm

Esto muestra que... ¡desastre! tienes dos Perl instalados. El v5.14.2 y el v5.18.1.

Destrucción, caos, hambre, plagas y demás serán minucias con lo que pasará en esa máquina.

Mira, mira. El propio Perl te lo dice:

root@srvsmc:/usr/local/nagios/libexec# cpan
Perl lib version (5.14.2) doesn't match executable '/usr/local/bin/cpan' version (v5.18.1) at /usr/lib/perl/5.14.2/Config.pm line 60.
root@srvsmc:/usr/local/nagios/libexec#  perl -E 'use strict; say $INC{"strict.pm"}'
/usr/local/lib/perl5/5.18.1/strict.pm

Estas líneas demuestran que el -primer- perl que se encuentra en la ruta del $PATH es el v5.14.2, pero las primeras bibliotecas que encuentra son las del v5.18.1.

Esto es algo así como tener el Java de Oracle y el OpenJDK instalados a la vez: diversión asegurada :D

Mi recomendación es... reinstalar todo el sistema.

La otra opción es... entrar con bisturí y fórceps y expulsar el Perl invasor (en tu caso, el v5.18.1). Y sin garantías de supervivencia del paciente.

Yo suelo realizar este tipo de operaciones a CPU abierta (sistemas de producción que no pueden parar), así que si necesitáis ayuda profesional, pues aquí estamos.
73  Programación / Scripting / Re: Python mezclado con ASM en: 8 Abril 2015, 17:43 pm
¿Errores? ¿Qué errores?
74  Programación / Scripting / Re: CPAN Linux reinstalar en: 7 Abril 2015, 14:23 pm
Para comprobar que está bien instalado, ejecuta

Código:
$ perl -E 'use strict; say $INC{"strict.pm"}'
/usr/share/perl/5.18/strict.pm

strict.pm es un módulo que viene incluido en la propia distribución de Perl, así que se instala cuando se instala Perl (que es lo mismo que decir que cuando se instala el sistema).

El error que sale es porque Perl no lo encuentra. Es decir: que en cualquiera de las rutas indicadas por el array especial @INC, no lo encuentra.

Las rutas en las que busca ese módulo son las indicadas en el error, y que se pueden ver así:

Código:
$ perl -E 'say for @INC'
/opt/oracle/instantclient_12_1/DBD-Oracle-1.74/lib/DBD/
/etc/perl
/usr/local/lib/perl/5.18.2
/usr/local/share/perl/5.18.2
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.18
/usr/share/perl/5.18
/usr/local/lib/site_perl

En el ordenador donde estoy ahora, que también tiene Perl v5.18.2, las rutas son las mismas, y puedo localizar la posición de strict.pm:

Código:
$ locate strict.pm
/home/explorer/Documentos/Desarrollo/perl/lib/strict.pm
/home/explorer/Proyectos/perlspanish/old/perlspanish.5.16.2/perl/lib/strict.pm
/home/explorer/perl5/perlbrew/build/perl-5.20.0/lib/strict.pm
/home/explorer/perl5/perlbrew/perls/perl-5.20.0/lib/5.20.0/strict.pm
/usr/share/perl/5.18.2/strict.pm

De todas ellas, la original es la última, /usr/share/perl/5.18.2/strict.pm, y esa ruta sí que está en las incluidas de @INC, así que Perl en mi sistema sí que lo localiza.

Debes ver en qué parte del disco de tu ordenador está el strict.pm.

75  Programación / Scripting / Re: Empezar en perl. en: 2 Abril 2015, 04:22 am
Aprender Perl

Subforo de Formación
76  Programación / Scripting / Re: Obtener y ordenar texto CMD y MediaInfo Cli en: 31 Marzo 2015, 00:03 am
Se puede realizar en una sola línea:
Código
  1. perl -E '$del = qr/\s*:\s*/; foreach (<*.mxf>) { ($name,$duration,$encoded) = qx(c:/mediainfo/MediaInfo.exe $_) =~ /Complete name$del(.*?)\n.+?Duration$del(.*?)\n.+?Encoded date$del(\d{4}-\d{2}-\d{2}).+?\n/ms; say join " | ", $name, $duration, $encoded; }'
Este código lee los nombres de todos los archivos *.mxf del directorio actual.
Por cada uno de ellos (foreach), llamamos a MediaInfo.
De todo lo que devuelve, nos quedamos con lo que queremos.
Y finalmente, lo formateamos y sacamos a pantalla.
Para guardarlo a un archivo, vale con agregar '> resumen.txt' al final.

En forma de programa:
Código
  1. #!/usr/bin/perl
  2.  
  3. $DEL = qr/\s*:\s*/; # definimos un delimitador que se repite varias veces
  4.  
  5. foreach $mxf (<*.mxf>) { # para todos los archivos .mxf del dir. actual
  6.  
  7. # llamamos a MediaInfo
  8.    my $resultado = qx(c:/mediainfo/MediaInfo.exe $mxf);
  9.  
  10. # extraemos lo que queremos desde el $resultado
  11.    ($name,$duration,$encoded) =
  12.        $resultado =~ /Complete name$DEL(.*?)\n.+?Duration$DEL(.*?)\n.+?Encoded date$DEL(\d{4}-\d{2}-\d{2}).+?\n/ms;
  13.  
  14. # formateamos los valores y los sacamos
  15.    say join ' | ', $name, $duration, $encoded;
  16. }
Ejemplo de salida:
d:\archivo1.mxf | 34mn 21s | 2014-12-04
d:\archivo2.mxf | 3mn 21s | 2014-12-04
d:\archivo3.mxf | 4mn 21s | 2014-12-04
d:\archivo4.mxf | 5mn 21s | 2014-12-04
77  Programación / Scripting / Re: Aprendiendo PYTHON desde cero, Lección 30. en: 22 Marzo 2015, 03:25 am
Este comportamiento no es algo propio de Python. En Perl pasa lo mismo con los hash:
Código:
$ perl -E '%x = ( a => 1, b => 2, c => 3); say "$_ => $x{$_}" for keys %x'
b => 2
a => 1
c => 3
$ perl -E '%x = ( a => 1, b => 2, c => 3); say "$_ => $x{$_}" for keys %x'
c => 3
b => 2
a => 1
Se trata de una medida de seguridad (los diccionarios o hashes se usan con temas de contraseñas, control de sesiones, etc.). Si fuera predecible el orden en que salen los pares clave/valor, se podría suplantar o robar información.

Existen bibliotecas que permiten recuperar la información en el mismo orden en que fue grabada. En Perl, por ejemplo, está Tie::IxHash.

78  Programación / Scripting / Re: Aprendiendo PYTHON desde cero, Lección 30. en: 21 Marzo 2015, 18:06 pm
La ordenación de las entradas clave/valor en un diccionario o hash, es "aleatorio" (depende del cómputo del valor hash interno).
79  Programación / Scripting / Re: Delimitadores consecutivos en: 11 Marzo 2015, 15:53 pm
Yo creo que el ejemplo está mal, porque los campos que quieres extraer están en las columnas 6 y 7. Yo creo que la primera línea está mal.

Si se trata de las columnas 3 y 7, se puede resolver en una sola línea de comandos:

Código
  1. perl -anF'\|' -E 'say join "|", @F[2,6]' archivo.txt > resultado.txt
80  Programación / Scripting / Re: CPAN Linux reinstalar en: 9 Marzo 2015, 17:06 pm
Desde el synaptic o aptitude puedes solicitar la reinstalación del Perl del sistema.

Luego, con respecto al comando cpan, ejecútalo, y en su shell, ejecuta

o conf init

Con eso, se reiniciará la configuración de cpan.

Otra opción es no usar cpan, sino instalar cpanm (que es lo recomendado en los últimos tiempos). Lo haces con

apt-get install cpanminus
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines