web-dev-qa-db-fra.com

Savoir s'il y a un utilisateur local connecté lors de la connexion via ssh

J'ai besoin d'effectuer des calculs sur une machine à laquelle je ne peux accéder qu'à distance, mais qui sert également de poste de travail. Ils sont nombreux et je veux en choisir un "gratuit". Free signifie dans ce cas que personne n'est connecté localement.

Mon premier essai était la commande who, mais pour une raison quelconque, elle ne répertorie que les utilisateurs "sélectionnés" et je ne peux pas vraiment savoir comment ils ont été sélectionnés. Essayez ensuite: ps aux | cut -d " " -f1 | sort | uniq: il est préférable d’afficher un groupe de démons mais également l’utilisateur local qui n’a pas été affiché par who.

Ma solution actuelle est d'aller faire ps aux | grep "gnome-session" qui est meilleur mais qui me donne quand même beaucoup de bric-à-brac. Idéalement, je recherche quelque chose que je puisse inclure dans mon profil ssh et qui me prévient des utilisateurs locaux (actifs) lorsque je me connecte.

MODIFIER:

  • Ni who ni w n'ont renvoyé l'utilisateur local. Est-ce un comportement inattendu?
  • uptime d'autre part m'a montré la bonne quantité d'utilisateurs (utilisateurs système moins et locaux comme root)
  • finger n'est pas installé
6
sebastiangeiger

Utilisez w

De la page de manuel w :

Montrer qui est connecté et ce qu'ils font.

Exemple de sortie:

$ w
09:15:10 up 43 min,  2 users,  load average: 0.74, 0.38, 0.24

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU  WHAT

kucing   tty7     :0               08:32   43:15m 57.73s  0.18s x-session-manager
kucing   pts/0    :0.0             08:48    0.00s  0.24s  0.00s w´
7
pl1nk

La commande finger est-elle installée ou pourrait-elle l'être? Cela devrait donner une liste de tous les utilisateurs qui sont connectés et d'où ils viennent (c'est-à-dire une autre machine, ou directement sur la machine), et devrait également vous dire depuis combien de temps cet utilisateur est inactif.

Voir le page de manuel ubuntu finger pour plus d'informations.

4
theabro

J'irais avec:

who | cut -d' ' -f1 | sort | uniq

Cela montrera une liste de vrais utilisateurs. Si la liste est vide - la machine est dans l'état déconnecté et attend que quelqu'un se connecte.
ps aux affiche également certains utilisateurs du système, que vous ne voulez probablement pas voir.

2

last

il regarde dans/var/log/wtmp et affiche un journal des derniers utilisateurs connectés, y compris ceux actuellement connectés.

1
pl1nk

Considérez simplement la plus grande gentillesse pour vos calculs. Devrait éviter de monopoliser les ressources pour tout autre utilisateur pouvant être connecté.

Nice -n 19 your_calculation_command
1
geirha

Ma réponse à la liste de chaque utilisateur connecté, de manière unique.

w | tail -n +3 | cut -d " " -f1 | sort | uniq
1
Eduardo Rolim

Une tentative rapide et sale:

ps au --no-heading | cut -d " " -f1 | uniq
0
david6

J'aime celui la:

for i in $(ls /dev/pts/*);do echo "TTY $i - $(ps e -t $i|grep -oP "(?<=(RUSER\=))[a-z]*"|uniq)";done ; echo -e '\n+++\n';  for i in $(pgrep ssh);do pstree -paul $i;done
0
Adam