1

VB.net を使用して、ASP.net ページ内で複数の perl スクリプト (約 2 ~ 5) を実行しています。スクリプトは問題なく実行されています。スクリプトは、UNIX サーバーの DNS 名とその他の情報を返し、正しく構成されていることを確認します。

Perl の結果を VB.net に出力して、メイン ページに結果を表示できるようにする必要があります (成功/失敗に応じて色分けされます)。

助言がありますか?

編集:私のコードを表示する

        If rdoUnix.Checked Then
            runUnixScript("testScript.pl", UNIXUSERNAME, UNIXPASSWORD)
        End If
    End If

End Sub
Public Sub runUnixScript(ByVal SCRIPT As String, ByVal UNIXUSERNAME As String, ByVal UNIXPASSWORD As String)
    Dim COMPUTERNAME As String = FQDN.Text
    Dim virtualFolder As String = "~/Scripts"
    Dim physicalFolder As String = Server.MapPath(virtualFolder)
    Dim processCmdFileTransfer As String = "/K C:\pscp.exe -pw " & UNIXPASSWORD & " " & physicalFolder & "\" & SCRIPT & " " & UNIXUSERNAME & "@" & COMPUTERNAME & ":" & SCRIPT

    Dim processCmdFileActions As String = "-ssh -pw " & UNIXPASSWORD & " " & UNIXUSERNAME & "@" & COMPUTERNAME & "XX" & SCRIPT
    ' Transfers Script, Makes it executable, Runs Script and then deletes script
    RunProcess("C:\Windows\System32\cmd.exe", processCmdFileTransfer, SCRIPT)
    RunProcess("C:\plink.exe", processCmdFileActions, SCRIPT, " chmod u+x ./")
    RunProcess("C:\plink.exe", processCmdFileActions, SCRIPT, " ./")
    RunProcess("C:\plink.exe", processCmdFileActions, SCRIPT, " rm ./")
End Sub

Public Sub RunProcess(ByVal processPath As String, ByVal startInfo As String, ByVal script As String, Optional ByVal command As String = "")
    Dim Proc As New System.Diagnostics.Process
    Proc.StartInfo = New ProcessStartInfo(processPath)

    If (InStr(startInfo, "XX") > 0) And (command <> "") Then
        startInfo = startInfo.Replace("XX", command)
    End If

    Proc.StartInfo.Arguments = startInfo
    Proc.StartInfo.RedirectStandardInput = True
    Proc.StartInfo.RedirectStandardOutput = False
    Proc.StartInfo.UseShellExecute = False
    Proc.StartInfo.CreateNoWindow = True
    Proc.Start()
    Proc.WaitForExit()
End Sub
4

1 に答える 1

1

出力リダイレクトを使用して、実行されたコードの出力をリダイレクトしてみてください。

次の行で perl 実行可能ファイルに perlscript のパスを渡すだけです。

 Dim psI As New ProcessStartInfo("PERL_INSTALLED\\perl.exe SCRIPT_DIR\\MyScript.pl");
于 2012-08-06T19:16:52.300 に答える