2012-04-16 3 views
-1

/etc/NetworkManager/dispatcher.d内のスクリプトにはexecがあり、NetworkManagerによってスクリプトにパラメータが渡されます。NetworkManagerディスパッチャスクリプト

私のノートパソコンのBIOSの1つが誤動作しています。私は手動で時刻を同期し、システムを更新する必要があります。私はこの作業を自動化するスクリプトを使って作業しています。 はここにスクリプトです:! #/ 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" 

(スクリプトはrootとして実行、Xウィンドウの前に呼び出されます)

user=$(who | grep "$DISPLAY" | awk '{print $1}' | tail -n1)ログインユーザー名を見つけることができません。しかし、それはxtermで動作します。 誰かを助けることができますか?

私はi686のをarchlinux使用しています+ +このOpenBox lxpanel

編集: 私はスクリプトがrootで実行されている間、実際のログインユーザー名を見つけたいと思います。

+0

多くの混乱と実際の使用例がありません。一方では、(アクティブな)ユーザセッションのリストを取得したいと思われる一方で、セッションが開始される前に*動作していると思われます。これはちょっとナンセンスです。質問が理にかなうように変更されていない限り、ここではあまり役に立たない。 –

答えて

0

スクリプトを実行しているユーザーの名前をお探しですか?方法:

user=$(id -un) 
+0

スクリプトを実行するユーザーはrootです。私はログインユーザ名を探したい – comicosmos

関連する問題