Asp.net 我可以缩短这个吗?在vb.net中创建了一个进程-必须调用它4次

Asp.net 我可以缩短这个吗?在vb.net中创建了一个进程-必须调用它4次,asp.net,vb.net,unix,Asp.net,Vb.net,Unix,由于某种原因,它昨天还在工作,但今天不工作。我认为这不是代码,而是一些外部问题 无论如何 Dim virtualFolder As String = "~/Scripts/" Dim physicalFolder As String = Server.MapPath(virtualFolder) Dim unixLogin As String = (USERNAME & "@" & COMPUTERNAME & ":" & UNIXSCRI

由于某种原因,它昨天还在工作,但今天不工作。我认为这不是代码,而是一些外部问题

无论如何

    Dim virtualFolder As String = "~/Scripts/"
    Dim physicalFolder As String = Server.MapPath(virtualFolder)
    Dim unixLogin As String = (USERNAME & "@" & COMPUTERNAME & ":" & UNIXSCRIPTNAME)

    ' Send file to Unix server via pscp
    Dim Proc As New System.Diagnostics.Process
    Proc.StartInfo = New ProcessStartInfo("C:\Windows\System32\cmd.exe")
    'MsgBox("/C C:\pscp.exe -pw " & PASSWORD & " " & physicalFolder & "\" & UNIXSCRIPTNAME & " " & unixLogin)
    Proc.StartInfo.Arguments = "C:\pscp.exe -pw " & PASSWORD & " " & physicalFolder & "\" & UNIXSCRIPTNAME & " " & USERNAME & "@" & COMPUTERNAME & ":" & UNIXSCRIPTNAME
    Proc.StartInfo.RedirectStandardInput = True
    Proc.StartInfo.RedirectStandardOutput = False
    Proc.StartInfo.UseShellExecute = False
    'Proc.StartInfo.CreateNoWindow = True
    Proc.Start()
    ' Allows script to execute sequentially instead of simultaneously
    Proc.WaitForExit()

    ' Make file executable
    Proc.StartInfo = New ProcessStartInfo("C:\plink.exe")
    'MsgBox("-ssh -pw " & PASSWORD & " " & USERNAME & "@" & COMPUTERNAME & " chmod u+x ./" & UNIXSCRIPTNAME)
    Proc.StartInfo.Arguments = "-ssh -pw " & PASSWORD & " " & USERNAME & "@" & COMPUTERNAME & " chmod u+x ./" & UNIXSCRIPTNAME
    Proc.StartInfo.RedirectStandardInput = True
    Proc.StartInfo.RedirectStandardOutput = False
    Proc.StartInfo.UseShellExecute = False
    ' Proc.StartInfo.CreateNoWindow = True
    Proc.Start()
    Proc.WaitForExit()

    ' Execute File
    Proc.StartInfo = New ProcessStartInfo("C:\plink.exe")
    Proc.StartInfo.Arguments = "-ssh -pw " & PASSWORD & " " & USERNAME & "@" & COMPUTERNAME & " ./" & UNIXSCRIPTNAME
    Proc.StartInfo.RedirectStandardInput = True
    Proc.StartInfo.RedirectStandardOutput = False
    Proc.StartInfo.UseShellExecute = False
    'Proc.StartInfo.CreateNoWindow = True
    Proc.Start()
    Proc.WaitForExit()

    ' Remove File
    Proc.StartInfo = New ProcessStartInfo("C:\plink.exe")
    Proc.StartInfo.Arguments = "-ssh -pw " & PASSWORD & " " & USERNAME & "@" & COMPUTERNAME & " rm ./" & UNIXSCRIPTNAME
    Proc.StartInfo.RedirectStandardInput = True
    Proc.StartInfo.RedirectStandardOutput = False
    Proc.StartInfo.UseShellExecute = False
    'Proc.StartInfo.CreateNoWindow = True
    Proc.Start()
    Proc.WaitForExit()
这个可以缩短吗? 我是。。。 1) 将文件发送到unix系统 2) 使其可执行 3) 运行文件(它是一个脚本)
4) 在

之后删除它,您可能想看看这是否适合您。我没有Unix系统来检查它,但它似乎正确地填充了进程。为了测试的目的,我还模拟了变量的默认值。这将消除大量冗余并缩短代码量

Public Class Form1
    Dim USERNAME As String = "USERNAME"
    Dim COMPUTERNAME As String = "COMPUTERNAME"
    Dim UNIXSCRIPTNAME As String = "UNIXSCRIPTNAME"
    Dim PASSWORD As String = "PASSWORD"
    Dim virtualFolder As String = "~/Scripts/"
    Dim physicalFolder As String = "physicalFolder"
    Dim unixLogin As String = (USERNAME & "@" & COMPUTERNAME & ":" & UNIXSCRIPTNAME)
    Dim processCmdFileTransfer As String = "C:\pscp.exe -pw " & PASSWORD & " " & physicalFolder & "\" & UNIXSCRIPTNAME & " " & USERNAME & "@" & COMPUTERNAME & ":" & UNIXSCRIPTNAME
    Dim processCmdFileActions As String = "-ssh -pw " & PASSWORD & " " & USERNAME & "@" & COMPUTERNAME & "XX" & UNIXSCRIPTNAME

    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        test()
    End Sub

    Public Sub test()

        RunProcess("C:\Windows\System32\cmd.exe", processCmdFileTransfer)
        RunProcess("C:\plink.exe", processCmdFileActions, " chmod u+x ./")
        RunProcess("C:\plink.exe", processCmdFileActions, " ./")
        RunProcess("C:\plink.exe", processCmdFileActions, " rm ./")

    End Sub

    Private Sub RunProcess(processPath As String, startInfo As String, Optional 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.Start()
        Proc.WaitForExit()

    End Sub
公共类表单1
用户名为String=“USERNAME”
将COMPUTERNAME设置为String=“COMPUTERNAME”
Dim unixscript名称为String=“unixscript名称”
将密码设置为String=“PASSWORD”
Dim virtualFolder As String=“~/Scripts/”
将physicalFolder设置为String=“physicalFolder”
Dim unixLogin作为字符串=(用户名&“@”&COMPUTERNAME&“:”&UNIXSCRIPTNAME)
Dim PROCESSCMDFILETERVER As String=“C:\pscp.exe-pw”&PASSWORD&&physicalFolder&“\”&UNIXSCRIPTNAME&&USERNAME&“@”&COMPUTERNAME&“:”&UNIXSCRIPTNAME
Dim processCmdFileActions作为字符串=“-ssh-pw”&密码&“&用户名&“@”&计算机名&“XX”&Unixscript名称
公共分新()
'设计器需要此调用。
初始化组件()
'在InitializeComponent()调用之后添加任何初始化。
测试()
端接头
公共子测试()
运行进程(“C:\Windows\System32\cmd.exe”,processCmdFileTransfer)
RunProcess(“C:\plink.exe”,processCmdFileActions,“chmod u+x./”)
RunProcess(“C:\plink.exe”,processCmdFileActions,./”)
RunProcess(“C:\plink.exe”,processCmdFileActions,“rm./”)
端接头
私有子运行进程(processPath作为字符串,startInfo作为字符串,可选命令作为字符串=”)
Dim Proc作为新的System.Diagnostics.Process
Proc.StartInfo=新进程StartInfo(进程路径)
如果(InStr(startInfo,“XX”)>0)和(command“”),则
startInfo=startInfo.Replace(“XX”,命令)
如果结束
Proc.StartInfo.Arguments=StartInfo
Proc.StartInfo.RedirectStandardInput=True
Proc.StartInfo.RedirectStandardOutput=False
Proc.StartInfo.UseShellExecute=False
程序启动()
WaitForExit()程序
端接头

下课

对不起,我没有回复。我会在明天的工作中检查这个问题,并向您汇报。@envinyater没问题,如果有任何问题,请告诉我