Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: ivan_esp en 5 Octubre 2014, 17:40 PM

Título: [BASH] Ejecutar un script pasandole argumentos desde otro
Publicado por: ivan_esp en 5 Octubre 2014, 17:40 PM
Hola a todos,
Resulta que tengo un script que toma como argumento el pid de un proceso e
imprime por pantalla en formato de columnas el PID, PPID, ESTADO y COMANDO que ejecuta dicho proceso.

Es decir esto:

PID PPID ESTADO COMANDO
8900 8880 S bash

Y ahora lo que necesito es otro script que proporcione al script anterior todos los
PID de los procesos del sistema, para que imprima su información.

El primer script es este:

Código (bash) [Seleccionar]


   #!/bin/bash
   #inf_process
   
   #echo -e "PID\tPPID\tESTADO\tCOMANDO\n"
   
   #awk '/^Pid/ { printf $1 } /PPid/ { print $1 } /State/ { printf $1 } /Name/ { printf $1 }' /proc/$1/status
   
   
   
   #awk '/^Pid/ { printf $2 } /PPid/ { print $2 } /State/ { printf $2 } /Name/ { printf $2 }' /proc/$1/status
   
   awk '/^Pid/ { printf $1}' /proc/$1/status
   echo -en "\t"
   awk '/PPid/ { printf $1}' /proc/$1/status
   echo -en "\t"
   awk '/State/ { printf $1}' /proc/$1/status
   echo -en "\t"
   awk '/Name/ { print $1}' /proc/$1/status
   
   awk '/^Pid/ { printf  $2}' /proc/$1/status
   echo -en "\t"
   awk '/PPid/ { printf  $2}' /proc/$1/status
   echo -en "\t"
   awk '/State/ { printf  $2}' /proc/$1/status
   echo -en "\t"
   awk '/Name/ { print  $2}' /proc/$1/status




Alguna idea de como hacer el otro.
La unica forma que se me ocurre es obtener del comando ps los PID ,almacenarlos en un array ,recorre el array e ir ejecutando el primer script pasandole el PID,pero no se si esto se puede hacer en los script.

Saludos y Gracias
Título: Re: [BASH] Ejecutar un script pasandole argumentos desde otro
Publicado por: ivan_esp en 11 Octubre 2014, 13:43 PM
Nadie puede darme una idea de por donde tirar o que funcion utilizar ,etc?

Saludos y Gracias
Título: Re: [BASH] Ejecutar un script pasandole argumentos desde otro
Publicado por: daryo en 11 Octubre 2014, 16:25 PM
que tal
Código (bash) [Seleccionar]
ls /proc/ | grep -o '\<[0123456789]*\>'  | awk '{print "./sucomando.sh "$1}' | bash

y si bash puede manejar funciones y arrays es muy completo. no creo que hagan falta dos archivos para hacer eso.
Título: Re: [BASH] Ejecutar un script pasandole argumentos desde otro
Publicado por: ivan_esp en 14 Octubre 2014, 18:47 PM
Muchas gracias daryo,
funciona perfectamente,mas simple de lo que yo pensaba .

Saludos y Gracias :)