[英]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.