Autor
|
Tema: scrip de perl (Leído 7,506 veces)
|
stres
Desconectado
Mensajes: 6
|
Estoy empezando con perl y me piden el siguiente ejercicio, tengo que escribir un scrip de perl pensado para administrador, que produzca el siguiente resultado:
usuario (UID) directorio home espacio seguridad ------------------------------------------------------------------------------------------------ alberto (464) /home/alberto 845495K
el apartado seguridad estará en blanco, salvo si se da alguno de estos casos:
el user id es cero (mensaje: UID=0) la información sobre password en /etc/passwd es "!" o "*" (mensaje:PASSWD)
A ver si me podeis orientar.
|
|
|
En línea
|
|
|
|
_XuRRo_
Desconectado
Mensajes: 11
|
Pues no parece complicado,mira: yo llamaria a otros programas tipicos de linux, como 'whois' , 'du' y trabajaria con el fichero /etc/passwd. Con esas tres cosas ya puedes extraer toda la informacion q necesitas mostrar. t doy mas pistas utilizaria 'whoami' para saber q usuario soy, buscaria la linea correspondiente en el /etc/passw. De ahi saco el directorio home, el uid, y poco mas.... ves por donde va la cosa?? salu2
|
|
« Última modificación: 29 Mayo 2004, 21:47 pm por _XuRRo_ »
|
En línea
|
|
|
|
stres
Desconectado
Mensajes: 6
|
De momento leo el /etc/passwd #!/usr/bin/perl
$file = "etc/passwd"; #abro el fichero open (INFO, $file); # lo abre @lines = <INFO>; # lo lee en un vector close (INFO); #cierra el fichero print @lines; #imprime el vector
Esto es lo que llevo echo ahora el problema que me surge es como ponerlo con el formato que indique en el primer post creo que hay que utilizar el split y el espacio el du.
voy bien encaminado.
Un saludo de stres
|
|
|
En línea
|
|
|
|
byebye
Desconectado
Mensajes: 5.093
|
bueno pues para sacarlo en el formato ese, te pongo un ejemplo cutre pero puede que te de alguna idea: foreach $a (@lines) { @datos=split(":",$a); print "$datos[0] $datos[2] $datos[5]\n"; } eso te lo muestra en formato usuario/uid/home.
|
|
|
En línea
|
|
|
|
stres
Desconectado
Mensajes: 6
|
Un saludo Mr. Potato. Me has dato muy buenas pistas. Ahora lo que no logro conseguir es si en el camp User ide es 0 quiero que me salga el mensaje UID=0 Y en el campo passwd es "!" o "*" quiero que me salga mesaje=PASSWD.
A ver si me vuelver a orientar.
Un saludo. Stres
|
|
|
En línea
|
|
|
|
stres
Desconectado
Mensajes: 6
|
Por cierto se podría poner un campo para que me saliera tambien el espacio que utiliza cada ususario, creo que con el comando du podría hacerlo
Gracias
|
|
|
En línea
|
|
|
|
byebye
Desconectado
Mensajes: 5.093
|
solo tienes que poner algun if. en $a en cada vuelta tienes una linea, puedes usar otro split para pillar el campo de la linea que te interese y compararlo con el que necesitas, si es igual haces una cosa u otra.
por ejemplo haces otro split a cada linea con ":" y miras en q indice se te queda el que te interesa.
|
|
|
En línea
|
|
|
|
stres
Desconectado
Mensajes: 6
|
Como podría añadir el campo espacio utilizado por el usuario, sería con el comando du. Y por que me repite dos veces la palabra PASSWD cuano hago el condicional if con el campo de passwd #!/usr/bin/perl format STDOUT_TOP = SALIDA FORMATEADA . format STDOUT = Usuario UID DIRECTORIO HOME SEGURIDAD ------------------------------------------------------------- @<<<<<<<<<<<<<<<<<@|||||||||||@|||||||||||||||@>>>>>>>>>>>>> $datos[0] $datos[2] $datos[5] $datos[1] . write; $FILE = "/etc/passwd"; open(INFO,$FILE); @lines= <INFO>; close (INFO); foreach $a (@lines) { @datos=split(":",$a); if ($datos[2] <=0) { print $datos[2]= "UID=0\t" } if ($datos[1]= x) { print $datos[1]= "PASSWD\t" } print "$datos[0]\t $datos[2]\t $datos[5]\t $datos[1]\n"; }
|
|
« Última modificación: 28 Mayo 2004, 09:02 am por stres »
|
En línea
|
|
|
|
_XuRRo_
Desconectado
Mensajes: 11
|
Para ejecutar un prorgama externo a perl,se pude utilizar system( " lo q sea" ) o la comilla invertida y ejecuta un comando cualquiera q le indiques, pero no se puede recojer lo q muestra el comando para utilizarlo dentro de mi programa en perl. La forma para hacer eso es la siguiente: open(USUARIO,"whoami|"); #redireccionamos la salida del comando a un pipe $usuario =<USUARIO>; #leemos del pipe close(USUARIO); chomp($usuario);
Con este codigo obtenemos en la variable $usuario lo q ha devuelto el comando 'whoami' , de la misma forma se puede utilizar con cualquier comando, como du por ejemplo. Haz un "man du" en la consola y mira como funciona. Para pasar parametros al comando: open(USUARIO,"du $param1 $param2 |"); # ejemplo salu2
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
¿Scrip que funcionen en Habbo.es 100%?
Scripting
|
Josean94
|
2
|
3,729
|
4 Julio 2011, 13:56 pm
por Josean94
|
|
|
Scrip de hora
Desarrollo Web
|
Caster
|
1
|
1,844
|
5 Enero 2012, 10:13 am
por lipman
|
|
|
error con scrip vbs
Scripting
|
**Aincrad**
|
1
|
2,018
|
27 Julio 2017, 23:00 pm
por tincopasan
|
|
|
quieroace scrip
Scripting
|
Juan_98
|
2
|
1,781
|
13 Octubre 2018, 04:43 am
por Tino
|
|
|
Scrip / Hack RaiderZ
Scripting
|
agamenom3
|
1
|
3,073
|
7 Mayo 2020, 18:37 pm
por assw1208
|
|