如何解决如何将整个查询结果传递给 ASP 中的另一个页面或 shell 脚本?
我在 ASP Classic 中工作,需要将查询的返回值传递给 shell 脚本。目前我可以将单个变量传递给脚本,但我需要传递所有变量。
它可能是相同的语法,只是将它们全部传递到另一个 asp 页面。 这里显示的代码太多了,但这里是 SQL 命令:
set dbEDIEetsRs = dbEDIEets.execute(SQL_STMT)
从这里 IK 可以像这样将单个变量传递给其他页面:
response.write "<TD WIDTH='10.00%' BORDERCOLOR=" & vCOLR & "><FONT COLOR=BLUE SIZE=-1><A HREF=details.asp?PID=" & dbEDIEetsRs.fields("PROC_SEQ_NO").Value & ">" & dbEDIEetsRs.fields("TP_NAME").Value & "</A></FONT></TD>"
或者像这样的shell脚本:
vBaseCommand="c:\progra~1\putty\plink.exe -ssh -l " & vUser & " -pw " & vPwd & " -hostkey " & vHostKey & " " & vHost & " "
vParms="'" & vFileName & "' '" & vISAID & "' '" & vISACtrl & "' '"
& vGSID & "' '" & vGSCtrl & "' '" & vSTCtrl & "' 2>&1"
vCommand=vBaseCommand & vROOTDIR & "/bin/get_set.sh " & vParms
仅供参考,他上面的变量已通过此页面并通过以下方式请求:
vFileName = request("FileName")
所以我现在需要做的是将整个结果传递给 shell 脚本和/或页面。在上面调用脚本的示例中,我需要 vParms=dbEDIEetsRs(*)
表示整个shebang。
此请求背后的原因:用户请求特定日期之间的数据列表的第一页。此请求的结果被发送到列出数据的另一个页面。我现在需要将此数据列表发送到 shell 脚本,在该脚本中将查找并压缩每个文件以供用户下载。
谢谢
解决方法
显然空格是传递参数的很多问题,所以我使用 server.encode 将它们传递给 Bash shell 脚本:
vBaseCommand="c:\progra~1\putty\plink.exe -ssh -l " & vUser & " -pw " & vPwd & " -hostkey " & vHostKey & " " & vHost & " "
vSQL_STMT_ENC = Server.UrlEncode(vSQL_STMT)
vSQL_STMT_IB_ENC = Server.UrlEncode(vSQL_STMT_IB)
vSQL_STMT_OB_ENC = Server.UrlEncode(vSQL_STMT_OB)
vORDERBY_ENC = Server.UrlEncode(vORDERBY)
vEDIDIR_ENC = Server.UrlEncode(vEDIDIR)
vZIPFILENAME = "BULK_DATA_" & vDateString & ".zip"
vParms="'" & vSQL_STMT_ENC & "' '" & vSQL_STMT_IB_ENC & "' '" & vSQL_STMT_OB_ENC & "' '" & vORDERBY_ENC & "' '" & vEDIDIR_ENC & "' '" & vZIPFILENAME & "' 2>&1"
vCommand=vBaseCommand & vScriptDir & "gis_download_data.sh " & vParms
Set wshShell = Server.CreateObject("WScript.Shell")
Set wshExec = wshShell.Exec(vCommand)
然后在 shell 脚本中我使用这段代码来解码数据。到目前为止一切正常。
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
SQL_STMT_ORIG_DECODED=$(urldecode "$SQL_STMT_ORIG")
SQL_STMT_IB_DECODED=$(urldecode "$SQL_STMT_IB")
SQL_STMT_OB_DECODED=$(urldecode "$SQL_STMT_OB")
ORDERBY_DECODED=$(urldecode "$ORDERBY")
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。