Trova utente connesso e home directory di rete con uno script bash

2

Sto cercando di utilizzare uno script per trovare il nome utente e la home directory dell'utente attualmente connesso a un Mac. Questo è quello che ho, e funziona, ma c'è un modo migliore (e più semplice) per farlo?

user='logname'
userHome="eval echo ~'echo $user'"
userHome='$userHome'

Lo script non verrà quasi mai eseguito dall'utente loggato.

Questo è Mac OS X 10.6, unito a una Active Directory e un utente di rete è connesso. Quindi il nome utente non appare in /etc/passwd .

    
posta William Jackson 08.06.2011 - 17:50
fonte

5 risposte

2

Questo script:

#!/bin/bash
w -h | sort -u -t' ' -k1,1 | while read user etc
do
  homedir=$(dscl . -read /Users/$user NFSHomeDirectory | cut -d' ' -f2)
  echo =$user= =$homedir=
done

farà quanto segue:

  • trova tutti gli utenti che hanno effettuato l'accesso (anche tramite ssh!) w -h oppure puoi utilizzare anche il comando who
  • ordina e trova utenti unici sort -u -t' ' -k1,1
  • per ogni utente registrato
    • leggi il nome utente
    • trova la sua directory home dal daemon DirectoryService tramite il comando dscl
    • stampa il nome utente e la sua directory home
risposta data 08.06.2011 - 22:21
fonte
1

L'utente è memorizzato in una variabile USER e la casa è in HOME:

echo user name: $USER, user home: $HOME

Questo è fatto automaticamente. Non devi scrivere alcuno script per averli.

    
risposta data 08.06.2011 - 18:01
fonte
1

Da questa guida avanzata di scripting di Bash ho imparato che

The $(...) form has superseded backticks for command substitution.

The $(...) form of command substitution permits nesting.

Ora sto usando:

user=$(logname)
userHome=$(eval echo ~$(echo $user))
    
risposta data 08.06.2011 - 18:35
fonte
0

Supponendo che logname funzioni, puoi ottenere la directory home in questo modo:

user=$(logname)
userHome=$(awk -F: -v u=$user '$1 == u {print $6}' /etc/passwd)
    
risposta data 08.06.2011 - 18:35
fonte
-2

Non sono sicuro che siano necessarie tutte le altre complicazioni.

echo $USER
echo ~
    
risposta data 04.06.2015 - 18:11
fonte

Leggi altre domande sui tag