作者 主題: [csh shell]按下按鈕執行shell指令(已解)  (閱讀 3057 次)

0 會員 與 1 訪客 正在閱讀本文。

yokunandu

  • 可愛的小學生
  • *
  • 文章數: 7
    • 檢視個人資料
我希望能按下button跑指令,
因為是抓封包的方法,
我不確定可不可行......
我目前的程式是這樣的:
代碼: [選擇]
echo "function StartCapture()"
echo "{"
echo "document.getElementById('btnStop').disabled = false;"
echo "document.getElementById('btnStart').disabled = true;"
echo "document.getElementById('blockDownload').style.display = \"none\";"
        if [ "$Start" != "" ]; then
      /fs1/tcpdump/tcpdump -s 1500 -w $filename &
fi
echo "}";
echo "function StopCapture()"
echo "{"
if [ "$Stop" != "" ]; then
killall tcpdump

fi
echo "document.getElementById('btnStart').disabled = false;"
echo "document.getElementById('btnStop').disabled = true;"
echo "document.getElementById('blockDownload').style.display = \"block\";"

echo "}";
echo "</script>"
echo "<form name=DbC_form> "
echo "<input id='btnStart' name=Start value=\"$msg020\" type=submit onclick='javacript:StartCapture();'>"
echo "<input id='btnStop' name=Stop value=\"$msg030\" type=submit disabled='disabled' onclick='javacript:StopCapture();'>"

上面是希望按下StartCapture按鈕後,會執行/fs1/tcpdump/tcpdump -s 1500 -w $filename &
並顯示StopCapture按鈕。
按下StopCapture按鈕會執行
killall tcpdump
但是submit按鈕好像不會偵測到我按了哪個按鈕(用name),所以沒有去執行......
要如何才能達到我想要的功能呢?
麻煩大家幫忙了!
« 上次編輯: 2012-12-10 14:17 由 yokunandu »
.(\ /)
(O.o)
(> <)

This is Bunny. Copy Bunny into your signature to help him on his way to world domination.

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4025
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
Re: [csh shell]按下按鈕執行shell指令
« 回覆 #1 於: 2012-12-06 11:56 »
從第一個問題到第二個問題,我其實看不出你問的「語言」是哪一個?

BSD 的 csh 可以跑 echo "document.getElementById('btnStart').disabled = false;" 這行 Javascript 語法!?

我震精了我 ...... 不過比較有可能的是我太井底了
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

yokunandu

  • 可愛的小學生
  • *
  • 文章數: 7
    • 檢視個人資料
Re: [csh shell]按下按鈕執行shell指令
« 回覆 #2 於: 2012-12-06 12:12 »
因為對於cgi有錯誤認知,
才會造成我的問題很奇怪,跟先進們說聲抱歉!
我的程式是shell的:
#!/bin/sh
開頭寫成,
因為有ui部分,
結合了javascript。
檔名是.cgi的,
因為之前看到有人問這類型的檔案在此版,才想說可能是要把問題放在這。

如果要把javascript和shell分開,
那麼按鈕的顯示用javascript執行,
而用判斷來分析是哪個按鈕被執行,
也就是:
代碼: [選擇]
if [ "$Stop" != "" ]; then
killall tcpdump
fi
上面這個片段,我在其他檔案是可以執行的(也就是如果按下name=Stop的按鈕,就會執行shell指令:
killall tcpdump

只是不知為何我現在這個無法這樣做判斷......
還是這個部分要放在特定位置(跟client端程式分離)才有效?
若我沒做判斷,
將if [ "$Stop" != "" ]這部分移除,
程式就直接執行指令了。
但我希望能夠透過button來執行(但是不知道辦不辦得到)
.(\ /)
(O.o)
(> <)

This is Bunny. Copy Bunny into your signature to help him on his way to world domination.

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4025
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
Re: [csh shell]按下按鈕執行shell指令
« 回覆 #3 於: 2012-12-06 13:14 »
CGI ............  我 pass
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

yokunandu

  • 可愛的小學生
  • *
  • 文章數: 7
    • 檢視個人資料
Re: [csh shell]按下按鈕執行shell指令
« 回覆 #4 於: 2012-12-06 13:29 »
先謝謝您的支持,
我後來找到方法了!
就是按下button後,
用form跑到執行shell script的動作,
而跑過去的那個.cgi網頁加上button,
按下另一個網頁的button後會回到原始網頁,
接著判斷
代碼: [選擇]
if [ "$Stop" != "" ]; then
killall tcpdump
fi
也就是另一個網頁按下了StopCapture的動作。
因此執行killall tcpdump指令。

原來是我搞錯之前同事的網頁寫法才會出問題~

總之,這樣就可以達到使用者覺得按下一個button是開始,
按下另一個button(雖然是不同網頁)是結束的效果。

給大家參考!
如果不懂我說的是怎麼做,
還是可以問問喔~
.(\ /)
(O.o)
(> <)

This is Bunny. Copy Bunny into your signature to help him on his way to world domination.