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