mejor manera para desconectar usuarios remotos

Aldrin Martoq amartoq en dcc.uchile.cl
Lun Ene 26 20:45:22 CLST 2009


On Mon, 2009-01-26 at 18:25 -0300, Alvaro Herrera wrote:
> Aldrin Martoq escribió:
> > #!/bin/bash
> > hijos_ssh () {
> >   sshdpid=$(cat /var/run/sshd.pid)
> >   pstree -p $sshdpid \
> >   | perl -ne \
> >   '@a = ($_ =~ m/(\d+)/g); print join("\n", @a)."\n"' \
> >   | grep -v "^$sshdpid$"
> > }
> Yo creo que esta es una forma horrible de hacer esto.  Yo me inclinaría
> por algo así:
> ps --ppid $(cat /var/run/sshd.pid) -o pid --no-headers
> y luego iterar (una vez) para obtener los hijos de esos procesos, o sea
> for pid in $(ps --ppid $(cat /var/run/sshd.pid) -o pid --no-headers); do
> 	ps --ppid $pid -o pid --no-headers
> done


Yep, _mucho_ mejor! Solo te falto iterar todo el arbol hasta el final,
no solo la primera capa:

--------------------------h.sh-----------
#!/bin/bash
hijos() {
  for i in $(ps --ppid $1 -o pid --no-headers); do
    (hijos $i)
    echo -n "$i "
  done
}
sshdpid=$(cat /var/run/sshd.pid)

echo "hijos sshd ($sshdpid):" $(hijos $sshdpid)
-----------------------------------------


amartoq en videopodcast:~$ pstree -Ap $(cat /var/run/sshd.pid)
sshd(4859)-+-sshd(11117)---sshd(11125)---bash(11128)
           `-sshd(12035)---sshd(12039)---bash(12042)
amartoq en videopodcast:~$ ./h.sh 
hijos sshd (4859): 11128 11125 11117 12042 12039 12035



-- 
Aldrin Martoq <amartoq en dcc.uchile.cl>
http://aldrin.martoq.cl/videopodcast/ http://aldrin.martoq.cl/techblog/
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : no disponible
Tipo       : application/pgp-signature
Tamaño     : 197 bytes
Descripción: This is a digitally signed message part
Url        : http://listas.inf.utfsm.cl/pipermail/linux/attachments/20090126/33e741ae/attachment.bin


Más información sobre la lista de distribución Linux