Foro de elhacker.net

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
  1.  
  2.    #!/bin/bash
  3.    #inf_process
  4.  
  5.    #echo -e "PID\tPPID\tESTADO\tCOMANDO\n"
  6.  
  7.    #awk '/^Pid/ { printf $1 } /PPid/ { print $1 } /State/ { printf $1 } /Name/ { printf $1 }' /proc/$1/status
  8.  
  9.  
  10.  
  11.    #awk '/^Pid/ { printf $2 } /PPid/ { print $2 } /State/ { printf $2 } /Name/ { printf $2 }' /proc/$1/status
  12.  
  13.    awk '/^Pid/ { printf $1}' /proc/$1/status
  14.    echo -en "\t"
  15.    awk '/PPid/ { printf $1}' /proc/$1/status
  16.    echo -en "\t"
  17.    awk '/State/ { printf $1}' /proc/$1/status
  18.    echo -en "\t"
  19.    awk '/Name/ { print $1}' /proc/$1/status
  20.  
  21.    awk '/^Pid/ { printf  $2}' /proc/$1/status
  22.    echo -en "\t"
  23.    awk '/PPid/ { printf  $2}' /proc/$1/status
  24.    echo -en "\t"
  25.    awk '/State/ { printf  $2}' /proc/$1/status
  26.    echo -en "\t"
  27.    awk '/Name/ { print  $2}' /proc/$1/status
  28.  
  29.  


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
  1. 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 :)