On Mon, 2009-01-26 at 10:22 -0300, Victor Hugo dos Santos wrote: > debo de desconectar todos los usuarios remotos (ssh) de un servidor > durante un periodo de tiempo semanal.. > a principio pensé que deteniendo el servicio (/etc/init.d/ssh stop) > resolvería el tema, pero las conexiones activas, continúan activas > (plop ???) !!!
Eso permite actualizar ssh remotamente: se actualiza, se reinica el servidor, pero sigues conectado. > Bueno, asi que pregunto a ustedes, cual es la mejor manera de > desconectar los usuarios remotos ?? 1ero: deja un aviso en el /etc/motd explicando tus politicas [mira el man de motd, aca en debian debes modificar /etc/motd.tail] 2do: determina quienes se conectaron via ssh. Una aproximacion es ver que procesos son hijos de sshd; aca un ejemplo: // listar procesos hijos de sshd # pstree -p $(cat /var/run/sshd.pid ) // extraer PID's # pstree -up $(cat /var/run/sshd.pid )|\ perl -ne '@a = ($_ =~ m/(\d+)/g); print join("\n", @a)."\n"' > /tmp/listapid.txt // buscar usuarios (salvo root) # ps -ho user,tty $(cat /tmp/listapid.txt) | grep -v ^root # ps -ho user,tty $(cat /tmp/listapid.txt) | grep -v ^root \ | awk '{print $1}' | uniq > /tmp/listausuarios.txt 3ero: avisa a los usuarios // write a dichos usuarios # for i in $(cat /tmp/listausuarios.txt); do echo 'el mundo se va a acabar...' | write $i ; done 4to: mata los procesos (deberias regenerar el /tmp/listapid.txt) // kill por favor de los procesos # for i in $(cat /tmp/listapid.txt); do kill -HUP $i; done # sleep 60 // kill a los procesos porfiados... # for i in $(cat /tmp/listapid.txt); do kill -TERM $i; done # sleep 60 // kill a los ultra ultra porfiados # for i in $(cat /tmp/listapid.txt); do kill -KILL $i; done > 1° - un mensaje indicando que el servicio sera desconectado en unos 5 > minutos (como en shutdown) > 2° - algún comando que finalice correctamente los comandos que puedan > estar ejecutando este usuario "desde esta conexión".. > 3° - un comando para finalizar la conexcion de todos los usuarios remotos. > > la verdad es que podría hacer algo con KILL (-9 tal vez), pero creo > que seria brusco.. > por esto, pregunto por aca si alguien tiene alguna idea de como resolver esto. Otra opcion podria ser que evites login (touch /etc/nologin) y _suspender_ esos procesos (kill -STOP <pid>) ... y revivirlos a la vuelta de la hora normal (kill -CONT <pid>) Asi nadie pierde nada; pero depende de porque necesitas matar esos procesos ... -- Aldrin Martoq <amar...@dcc.uchile.cl> http://aldrin.martoq.cl/videopodcast/ http://aldrin.martoq.cl/techblog/
signature.asc
Description: This is a digitally signed message part