Kick off todos os outros usuários que estão logados?

2

Se eu digitar w , posso obter uma lista de todos os usuários conectados.

Eu também sei que killall -u USERNAME chuta todos os processos associados ao usuário USERNAME (incluindo o bash / shell, o processo sshd, etc). Até onde eu sei, é assim que você deve "chutar um usuário" do seu servidor.

No entanto, não sei como dar início a todos os usuários. Eu tenho que de alguma forma w | cut -d' ' -f1 para obter uma lista de usuários (e, em seguida, de alguma forma tira a linha em branco e campo USER e seu próprio nome de usuário) e alimentar isso para o comando -u para killall ?

Ou existe uma maneira melhor?

    
por Aruka J 15.10.2017 / 22:55

2 respostas

2

Você pode matar todos com:

who | awk ' !~ /root/{ cmd="/sbin/pkill -KILL -u " ; system(cmd)}'

Você precisa ser root ou usar o sudo.

Lembre-se de que matar todos os usuários pode ser perigoso e danificar seu sistema de arquivos. Além disso, incomode seus usuários; o que você espera que aconteça se um deles estiver fazendo algo como a manutenção do mysql quando você os mata?

Você realmente deve usar ps -ef | grep "user" ou algo semelhante para inspecionar seus processos.

Por que não avisá-los em vez disso?

shutdown -h +10 "Server is going down 10 minutes. Save your work and logout."
    
por Rinzwind 15.10.2017 / 23:08
1

Escrevi este script também, o que parece funcionar:

#!/bin/bash

ME=$SUDO_USER

if [[ -z $ME ]] 
then
    echo "Must run script using sudo."
    exit 1
fi

who | while read NAME REST
do
    if [[ $NAME != $ME ]]
    then
        killall -u "${NAME}"
        if [[ "$?" = "0" ]]
        then
            echo "Disconnecting ${NAME} from the system..."
        else
            echo "Could not disconnect ${NAME} from the system..."
        fi
    fi
done
    
por Aruka J 15.10.2017 / 23:33