2012-04-16 1 views
-1

Dans /etc/NetworkManager/dispatcher.d les scripts seront exécutés et les paramètres seront transmis aux scripts par NetworkManager.Le script Dispatcher NetworkManager

Un de mes BIOS de portable est défectueux, je dois synchroniser manuellement l'heure, et faire la mise à niveau du système BTW. Je travaille avec un script pour automatiser cette tâche. est ici le script: #/bin/sh

IF=$1 
STATUS=$2 

if [ "$STATUS"x != 'up'x -o "$(date +%Y)" -gt "2012" ] ;then 
    exit 
fi 

logger "==$0==" 
wait_for_process(){ 
    PNAME=$1 
    PID=`pgrep $PNAME` 
    while [ -z "$PID" ];do 
     logger "waiting $1 running for another 3 sec.." 
     sleep 3; 
     PID=`pgrep $PNAME` 
    done 
    logger "$1 is running!" 
} 
wait_for_process nm-applet 
wait_for_process lxpanel 

export DISPLAY=$(echo $DISPLAY | cut -c -2) 

if [ -z $DISPLAY ];then 
    export DISPLAY=:0 
fi 

#below cmd will yield null string for $user 
user=$(who | grep "$DISPLAY" | awk '{print $1}' | tail -n1) 
#so I have to hardcode the user name:(
user=xxx 
export XAUTHORITY="/home/$user/.Xauthority" 

logger "Display $DISPLAY user $user" 

su $user -c "xterm -e 'sudo /usr/bin/ntpd -qdg && sudo yaourt -Syua' &" || logger "cannot run xterm" 

(le script est appelé avant fenêtre x, en tant que root)

user=$(who | grep "$DISPLAY" | awk '{print $1}' | tail -n1) ne peut pas trouver le nom d'utilisateur de connexion. Mais cela fonctionne en xterm. Quelqu'un peut-il aider?

J'utilise archlinux i686 + openbox + lxpanel

modifier: Je veux trouver le nom d'utilisateur de connexion réelle, alors que le script est exécuté par root.

+0

Beaucoup de confusion et manquant un cas d'utilisation réel. D'une part, vous semblez vouloir obtenir une liste de sessions utilisateur (actives), d'autre part, vous semblez vous attendre à ce que cela fonctionne * avant que la (les) session (s) ne soit démarrée, ce qui est juste un non-sens. Pas grand chose d'utile ici à moins que la question soit modifiée pour avoir un sens. –

Répondre

0

Vous recherchez le nom de l'utilisateur exécutant le script? Que diriez-vous:

user=$(id -un) 
+0

L'utilisateur qui exécute le script est root. Je veux trouver le nom d'utilisateur de connexion – comicosmos