簡體   English   中英

bash cgi遠程ssh

[英]bash cgi remote ssh

我一直在Google上搜索此內容,但似乎沒有多少人寫bash cgi ...

因此,我有一個在瀏覽器上運行並需要用戶輸入的cgi bash腳本,它應該將ssh遠程連接到遠程服務器,並獲得正常運行時間並將其存儲在一個臨時文件中。

ssh密鑰交換已完成,我可以不用密碼將ssh放入盒子。 我知道變量正在傳遞腳本,因為它確實回顯了用戶鍵入的內容。而且我知道它會嘗試通過ssh對遠程主機進行操作,因為單擊“提交”時頁面會加載一段時間。

但是,當我查看臨時文件時,什么都沒有,所以ssh失敗了但沒有留下任何錯誤。

有人通過CGI bash進行過遠程ssh體驗嗎?

#!/bin/bash 
echo "Content-type: text/html"
echo '<html>'
echo '<head>'
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'
echo '</head>'
echo '<body>'

echo "<form method=GET action=\"${SCRIPT}\">"\
    '<table nowrap>'\
      '<tr><td>Input</TD><TD><input type="text" name="name" size=12></td>   </tr>'\
                '</table>'

echo '<br><input type="submit" value="Process Form">'\
   '<input type="reset" value="Reset"></form>'

NAME=`echo "$QUERY_STRING" | sed -n 's/^.*name=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`

echo "NAME: " $NAME
ssh -o ConnectTimeout=3 -q $NAME uptime > /var/tmp/uptime
cat /var/tmp/uptime

對於ssh命令,您正在使用-q-o ConnectTimeout ,因此,如果連接超時,則不會輸出任何錯誤消息。

如果要調試該ssh命令,請執行以下操作

ssh -o ConnectTimeout=3 $NAME uptime > /var/tmp/uptime 2>&1

這樣,如果ssh失敗,您將在/var/tmp/uptime看到錯誤消息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM