Index: /nutchez-0.2/src/test/add_hosts
===================================================================
--- /nutchez-0.2/src/test/add_hosts	(revision 171)
+++ /nutchez-0.2/src/test/add_hosts	(revision 172)
@@ -40,3 +40,3 @@
 # 附加 nutch_nodes 到 /etc/hosts 
 cp -f /etc/hosts /etc/hosts.bak
-cat $1 >> $2
+cat $1 | grep -v '#' >> $2
Index: /nutchez-0.2/src/test/duplicate_del
===================================================================
--- /nutchez-0.2/src/test/duplicate_del	(revision 171)
+++ /nutchez-0.2/src/test/duplicate_del	(revision 172)
@@ -11,5 +11,10 @@
 # Delete duplicating ip addresss in file
 IPs=$(cat $1 | grep -v 'ip6' | grep -v '#' | grep -v '^$' | awk '{print $1}')
-cp -f $1 ${1}.bak
+
+# 刪掉空白行
+sed -i '/^$/d' $1
+
+cp -f "$1" "${1}.old"
+#read -p "cp - f $1 ${1}.old ; $?"
 
 for ip_add in $(echo $IPs)
@@ -25,5 +30,4 @@
 done
   
-
 # Dlete duplicating hostname in file
 hostnames=$(cat $1 | grep -v ip6 | grep -v '#' | grep -v '^$' |awk '{print $2}')
@@ -40,2 +44,5 @@
     done                                                                                                                                                             
 done
+
+cp -f "$1" "${1}.bak"
+#read -p "cp -f $1 ${1}.bak ; $?"
Index: /nutchez-0.2/src/test/nutchez
===================================================================
--- /nutchez-0.2/src/test/nutchez	(revision 171)
+++ /nutchez-0.2/src/test/nutchez	(revision 172)
@@ -9,34 +9,54 @@
 #   2010/06/07  Rock    First release (1.0)
 
-# Variables Declaration #
+# [Variables Declaration] #
 DIALOG=dialog
 main_choice=
-#LIST_Option="off"
-
-# PATH Declaration
+
+# [PATH Declaration] #
 NutchEZ_Install_PATH=/opt/nutchez
 NutchEZ_HOME=/home/nutchuser/nutchez
 
-# Functions Declaration #
-## Prepare Check  ##
+# [Functions Declaration] #
+## [Prepare Check]  ##
 function prepare_check(){ 
-if [ ! -e $NutchEZ_HOME/system/nutch_nodes ]; then
+# 若無 nutchez_nodes　則跳出
+if [ ! -e "${NutchEZ_HOME}/system/nutch_nodes" ]; then
     $DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC =" --title "[nutch_nodes Files]" \
-    --msgbox "Fail: Don't find $NutchEZ_Source_HOME/nutch_nodes !!!" 10 40
-    exit
-fi
-
-$DIALOG --clear --defaultno --backtitle "= [NutchEz Management Interface] ~by NCHC =" --title "[/etc/host Update]" \
-    --yesno "Do you want to update \"/etc/hosts\" !!!\n(First time to execute it, please update)" 6 50
-
-
- if [ "$?" == "0" ]; then
-    ./duplicate_del $NutchEZ_HOME/system/nutch_nodes
-    echo -e "\nPlz input root password to update /etc/hosts !!!"
-    su root -c "./duplicate_del /etc/hosts && ./add_hosts $NutchEZ_HOME/nutch_nodes /etc/hosts"
- fi
-}
-
-## Main Menu
+    --msgbox "Fail: Don't find $NutchEZ_HOME/system/nutch_nodes !!!" 10 40
+    exit
+fi
+
+# 判斷 nutch_nodes　和 nutch_nodes.back
+# 第一次執行則要求 user　更新 /etc/hosts
+if [ ! -e "${NutchEZ_HOME}/system/nutch_nodes.bak" ]; then
+    $DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC =" --title "[/etc/host Update]" \
+    --yesno "First execut nutchez management interface.\nPlz update /etc/hosts !!!" 10 55
+
+    echo -e "Plz input root password to update /etc/hosts !!!"
+    ./duplicate_del "${NutchEZ_HOME}/system/nutch_nodes"
+    su root -c "./duplicate_del /etc/hosts && ./add_hosts ${NutchEZ_HOME}/system/nutch_nodes /etc/hosts"
+    #　若密碼輸入失敗則跳出
+    if [ $? == "1" ]; then
+        echo "Root password is error ! Plz check root password !!!"
+        exit
+    fi 
+# 若 nutch_nodes 被更新過，則要求更新 /etc/hosts
+elif [ ${NutchEZ_HOME}/system/nutch_nodes -nt ${NutchEZ_HOME}/system/nutch_nodes.bak ]; then
+    $DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC =" --title "[/etc/host Update]" \
+    --yesno "nutch_nodes already be modified.\nPlz update /etc/hosts !!!" 10 55
+
+    echo -e "Plz input root password to update /etc/hosts !!!"
+    ./duplicate_del "${NutchEZ_HOME}/system/nutch_nodes"
+    su root -c "./duplicate_del /etc/hosts && ./add_hosts ${NutchEZ_HOME}/system/nutch_nodes /etc/hosts"
+    #　若密碼輸入失敗則跳出                   
+    if [ $? == "1" ]; then                    
+        echo "Root password is error ! Plz check root password !!!"
+        exit                                  
+    fi
+fi
+
+}
+
+## [Main Menu] ##
 function main_menu(){
 main_choice="/tmp/main_choice"
@@ -52,53 +72,71 @@
 }
 
-## Cluster Setup (datanode & tasktracker) ##
+## [Cluster Setup (datanode & tasktracker)] ##
 function cluster_setup(){
-
-node_list=$(cat /home/nutchuser/nutchez/nutch_nodes | awk '{print $1}')
-#echo -e $node_list
-#read
-
-#dataNodes=$($DIALOG --clear  --backtitle "= [NutchEz Management Interface] ~by NCHC  = " --title "datanode & tasknode setup" \
-#    --checklist "datanode & tasknode choose: " 15 55 7 $(cat /home/nutchuser/nutch_nodes | awk '{print $1 "\t" $2 "\t" "off" }'))
-#echo $dataNodes
+# 從 nutch_nodes 讀出 ip　和 hostname
+#IP_list=$(cat $NutchEZ_HOME/system/nutch_nodes | grep -v '^$' | grep -v '#' | awk '{print $1}')
+#HOST_list=$(cat $NutchEZ_HOME/system/nutch_nodes | grep -v '^$' | grep -v '#' | awk '{print $2}')
+LIST_status="off"
+allpart="/tmp/allpart"
+runNodes="/tmp/runNodes"
 clusterSetup="/tmp/clusterSetup"
+
+$DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC =" \
+    --title "[Management Options]" \
+    --menu "Plz choose: " 15 55 2 \
+    "All" "All nodes" \
+    "Part" "choose part nodess" 2>$allpart
+
+# 判斷是否選 all　和 part，若是 all　直接到服務選單，若是 part 則先到機器選單
+if [ $(cat $allpart) == "All" ]; then
+     cat $NutchEZ_HOME/system/nutch_nodes | grep -v '^$' | grep -v '#'  | awk '{print $1}' >$runNodes
+else
+    $DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC  = " --title "[Datanode & Tasktracker Nodes Choose]" \
+    --checklist "datanode & tasktracker choose: " 15 55 7 $(cat  $NutchEZ_HOME/system/nutch_nodes | \
+    grep -v '^$' | grep -v '#'  | awk '{print $1 "\t" $2 "\t" "$LIST_status" }') 2>$runNodes
+fi
+
 $DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC =" --title "[Datanode & Tasktracker Setup]" \
     --menu "Plz choose: " 10 65 3 \
-    "start" "Start all datanodes & tasktrackers in cluster" \
-    "stop" "Stop all datanodes & tasktrackers in cluster" \
+    "start" "Start datanodes & tasktrackers" \
+    "stop" "Stop datanodes & tasktrackers" \
+    "restart" "restart datanodes & tasktrackers" \
     "exit" "Exit" 2>$clusterSetup
 
-#echo -e "$clusterSetup"  
-
 if [ "$(cat $clusterSetup)" == "start" ]; then
-    echo "/opt/nutchez/nutch/bin/hadoop-daemon.sh start datanode"
-    echo "/opt/nutchez/nutch/bin/hadoop-daemon.sh start tasktracker"
-    /opt/nutchez/nutch/bin/hadoop-daemon.sh start datanode
-    /opt/nutchez/nutch/bin/hadoop-daemon.sh start tasktracker 
-    for node in $(echo $node_list)
+    for node in $(cat $runNodes)
     do
+        echo -e "start !"
         echo -e "ssh -o StrictHostKeyChecking=no $node /opt/nutchez/nutch/bin/hadoop-daemon.sh start datanode"
         ssh -o StrictHostKeyChecking=no $node "/opt/nutchez/nutch/bin/hadoop-daemon.sh start datanode"
         echo -e "ssh -o StrictHostKeyChecking=no $node /opt/nutchez/nutch/bin/hadoop-daemon.sh start tasktracker"
         ssh -o StrictHostKeyChecking=no $node "/opt/nutchez/nutch/bin/hadoop-daemon.sh start tasktracker"
+        [ $? == "0" ] || echo "Can't ssh to $node !!!"
     done
 elif [ "$(cat $clusterSetup)" == "stop" ]; then
-    echo "/opt/nutchez/nutch/bin/hadoop-daemon.sh stop datanode"
-    echo "/opt/nutchez/nutch/bin/hadoop-daemon.sh stop tasktracker"
-    /opt/nutchez/nutch/bin/hadoop-daemon.sh stop datanode
-    /opt/nutchez/nutch/bin/hadoop-daemon.sh stop tasktracker
-    for node in $(echo $node_list)
+    for node in $(cat $runNodes)
     do
+        echo -e "stop !"
         echo -e "ssh -o StrictHostKeyChecking=no $node /opt/nutchez/nutch/bin/hadoop-daemon.sh stop datanode"
         ssh -o StrictHostKeyChecking=no $node "/opt/nutchez/nutch/bin/hadoop-daemon.sh stop datanode"
         echo -e "ssh -o StrictHostKeyChecking=no $node /opt/nutchez/nutch/bin/hadoop-daemon.sh stop tasktracker"
         ssh -o StrictHostKeyChecking=no $node "/opt/nutchez/nutch/bin/hadoop-daemon.sh stop tasktracker"
+        [ $? == "0" ] || echo "Can't ssh to $node !!!"
     done
 else
-    exit 0
-fi
-}
-
-## Tomcat Severice start/stop/restart  ##
+    for node in $(cat $runNodes)
+    do  
+        echo -e "restart !"
+        ssh -o StrictHostKeyChecking=no $node "/opt/nutchez/nutch/bin/hadoop-daemon.sh stop datanode"
+        ssh -o StrictHostKeyChecking=no $node "/opt/nutchez/nutch/bin/hadoop-daemon.sh stop tasktracker"
+        ssh -o StrictHostKeyChecking=no $node "/opt/nutchez/nutch/bin/hadoop-daemon.sh start datanode"
+        ssh -o StrictHostKeyChecking=no $node "/opt/nutchez/nutch/bin/hadoop-daemon.sh start tasktracker"
+        [ $? == "0" ] || echo "Can't ssh to $node !!!"
+    done
+  
+fi
+}
+
+## [Tomcat Severice start/stop/restart] ##
 function tomcat_switch(){
 pid_tc=$(ps axw -eo pid,command | grep "catalina" | grep "java" | grep "start" | awk '{print $1}')
@@ -135,5 +173,5 @@
 }
 
-##  Tomcat Port change ##
+## [Tomcat Port Change] ##
 function tomcat_port(){
 
@@ -156,5 +194,5 @@
 
 
-## Language Change  ##
+## [Language Change] ##
 function lang_switch(){
 echo -e "lang_switch"
@@ -169,5 +207,5 @@
 
 
-# Main Code
+# [Main Code] #
 if [ $USER != "nutchuser" ]; then
     echo -e "\nYour identify is not nutchuser, plz change to \"nutchuser\" !!!"
