diff --git a/sample/ONS2014demo/scripts/link-hw.sh b/sample/ONS2014demo/scripts/link-hw.sh
new file mode 100755
index 0000000..e6f2487
--- /dev/null
+++ b/sample/ONS2014demo/scripts/link-hw.sh
@@ -0,0 +1,95 @@
+#! /bin/bash
+
+SCRIPT_DIR=$(cd `dirname $0`; pwd)
+
+#controller=`hostname`
+switches=`ifconfig -a | grep sw |grep -v eth | awk '{print $1}'`
+
+function host2ip (){
+   ip=`grep $1 /etc/hosts |grep -v "ip6"|  awk '{print $1}'`
+   echo $ip
+}
+
+# link.sh 00:00:00:00:ba:5e:ba:11 1 up
+
+if [ $# != 3 ];then
+ echo "usage: $0 <dpid> <port> <up|down>"
+fi
+
+src_dpid="dpid:"`echo $1 | sed s'/://g'`
+src_port=$2
+cmd=$3
+
+if [  "x00:00:00:00:ba:5e:ba:11" == "x$1" ]; then
+        if [ x$cmd == "xup" ]; then
+                ${SCRIPT_DIR}/prontolink.exp 10.128.0.61 $src_port 1  
+        elif [ x$cmd == "xdown" ]; then
+                ${SCRIPT_DIR}/prontolink.exp 10.128.0.61 $src_port 0 
+        else
+		echo "no cmd"
+        fi
+elif [  "x00:00:00:00:00:00:ba:12" == "x$1" ]; then
+        if [ x$cmd == "xup" ]; then
+                ${SCRIPT_DIR}/prontolink.exp 10.128.0.62 $src_port 1  
+        elif [ x$cmd == "xdown" ]; then
+                ${SCRIPT_DIR}/prontolink.exp 10.128.0.62 $src_port 0 
+        else
+		echo "no cmd"
+        fi
+elif [  "x00:00:00:00:ba:5e:ba:13" == "x$1" ]; then
+        if [ x$cmd == "xup" ]; then
+                ${SCRIPT_DIR}/prontolink.exp 10.128.0.63 $src_port 1 
+        elif [ x$cmd == "xdown" ]; then
+                ${SCRIPT_DIR}/prontolink.exp 10.128.0.63 $src_port 0 
+        else
+		echo "no cmd"
+        fi
+elif [  "x00:00:20:4e:7f:51:8a:35" == "x$1" ]; then
+        if [ x$cmd == "xup" ]; then
+                ${SCRIPT_DIR}/prontolink.exp 10.128.0.50 $src_port 1 
+        elif [ x$cmd == "xdown" ]; then
+                ${SCRIPT_DIR}/prontolink.exp 10.128.0.50 $src_port 0 
+        else
+		echo "no cmd"
+        fi
+
+elif [  "x00:01:00:16:97:08:9a:46" == "x$1" ]; then
+        if [ x$cmd == "xup" ]; then
+                ${SCRIPT_DIR}/neclink.exp $src_port no
+        elif [ x$cmd == "xdown" ]; then
+                ${SCRIPT_DIR}/neclink.exp $src_port 
+        else
+		echo "no cmd"
+        fi
+
+
+fi
+
+
+
+#for s in $switches; do
+#    dpid=`sudo ovs-ofctl  show  $s |grep dpid | awk '{print $4}'`
+#    if [  "x$dpid" == "x$src_dpid" ]; then
+#
+##       intf=`sudo ovs-ofctl show $s |grep addr | awk -v p=$src_port 'BEGIN {pat="^ "p"\("}
+##	$0 ~ pat {w=match ($0, /\(.*\)/); if (w) print substr($0, RSTART+1, RLENGTH-2)}'`
+#
+#        sudo ovs-ofctl show $s |grep addr | sed 's/[\(\)]/,/g'>/tmp/baz.out
+#	intf=`cat /tmp/baz.out | awk -v p=$src_port 'BEGIN {pat="^ "p","}
+#	$0 ~ pat {w=match($0, /,.*,/); if (w) print substr($0, RSTART+1, RLENGTH-2)}'`
+#
+#	if [ x$intf != "x" ]; then
+#	        if [ x$cmd == "xup" ]; then
+#		    echo "sudo ifconfig ${intf}  up"
+#		    sudo ifconfig ${intf}  up
+#       		elif [ x$cmd == "xdown" ]; then
+#		    echo "sudo ifconfig ${intf}  down"
+#		    sudo ifconfig ${intf}  down
+#	        else
+#		    echo "sudo ifconfig ${intf}"
+#		    sudo ifconfig ${intf} 
+#		fi
+#		break
+#        fi
+#    fi
+#done
