2012-04-16 66 views
-1

/etc/NetworkManager/dispatcher.d中的腳本將得到exec,參數將通過NetworkManager傳遞給腳本。NetworkManager調度程序腳本

我的一臺筆記本電腦BIOS出現故障,我不得不手動同步時間,並做系統升級順便說一句。我正在使用腳本來自動執行此任務。 這裏的腳本: #/ 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" 

(腳本X窗口之前調用,以root身份運行)

user=$(who | grep "$DISPLAY" | awk '{print $1}' | tail -n1)找不到登錄用戶名。但它在xterm中有效。 有人可以幫忙嗎?

我現在用的archlinux爲i686 +的openbox + lxpanel

編輯: 我想找到真正的登錄用戶名,而腳本由root身份運行。

+0

很多混亂和缺少一個真實的用例。一方面,你似乎想獲得(活動)用戶會話列表,另一方面,你似乎期望它在會話開始之前工作,這只是無稽之談。除非問題被修改爲合理,否則這裏沒什麼幫助。 – 2014-04-26 18:12:43

回答

0

你在尋找運行腳本的用戶的名字嗎?如何:

user=$(id -un) 
+0

運行該腳本的用戶是root用戶。我想找到登錄用戶名 – comicosmos 2012-04-17 05:17:45