VB Konsolenanwendung: Aufruf eines bash scripts

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von mpmichael.

    VB Konsolenanwendung: Aufruf eines bash scripts

    Hallo,

    ich versuche einen Anwendung in VB zu schreiben. Innerhalb der Anwendung muss ich ein bash script aufrufen. Der Gedake war das analog zu Windows mit shell("cmd /c *****") zu tun. Unter .net core steht shell verständlicherweise nicht zur Verfügung. Auch die verschiedenen Microsoft und Google Seiten haben mich nicht weiter gebracht. Vielleicht kann mir aber jemand von Euch helfen. Vermutlich ist es auch ganz einfach, wenn man es weiß.
    Auch ja - die Anwendung soll nur unter Linux laufen und ich habe mich deshalb für VB entschieden, weil ich hier die meiste Erfahrung habe.

    LG
    mpmichael
    @mpmichael Willkommen im Forum. :thumbup:
    "Aufruf" ist in diesem Kontext so nicht definiert (analog zu "Aufruf eines Unterprogramms").
    Du kannst eine Batch starten, die in diesem Sinne asynchron ausgeführt wird.
    Du kannst ein Event abonieren, dass Du benachrichtigst wirst, wenn die Batch fertig ist.
    Allerdings passt das so gar nicht in die Philosophie einer Console-Anwendung.
    Darum folgende Frage:
    Was willst Du erreichen?
    Was ist der Plan?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo,

    das ging ja fix mit den Antworten! Vielen Dank.
    @Cheffboss : Danke - das sieht schon sehr nach dem aus, was ich suche. Muss mal testen, ob es auch unter Ubuntu läuft.
    @RodFromGermany: Zunächst teste ich Möglichkeiten. Dann soll es eine Anwendung werden die auf einem Ubuntu Server läuft und bei bestimmten Bedingungen über "zabbix_sender" Werte an das Systemmonitoring schickt. Das wäre in der Tat asyncron. Der endgültige Aufruf wäre:

    VB.NET-Quellcode

    1. dim zabitem as string = "DasTestItem"
    2. dim zabvalue as string = "55"
    3. Dim Command As String = "zabbix_sender - c / etc / zabbix / zabbix_agentd.conf - k " & zabitem & " -o " & zabvalue & ">/dev/null"


    Ich schätze ich werde das mal so testen:

    VB.NET-Quellcode

    1. Private Function zabwrite(zabitem As String, zabvalue As String) As Boolean
    2. Try
    3. Using myProcess As New Process()
    4. myProcess.StartInfo.UseShellExecute = False
    5. myProcess.StartInfo.FileName = "zabbix_sender"
    6. myProcess.StartInfo.Arguments = "- c / etc / zabbix / zabbix_agentd.conf - k " & zabitem & " -o " & zabvalue & ">/dev/null"
    7. myProcess.StartInfo.CreateNoWindow = True
    8. myProcess.Start()
    9. End Using
    10. Return True
    11. Catch e As Exception
    12. Console.WriteLine((e.Message))
    13. Return False
    14. End Try
    15. End Function

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „mpmichael“ ()

    @mpmichael .NET Von "unter Ubuntu" hab ich keine Ahnung, musst Du sorgfältig testen.
    Ansonsten sieht es gut aus.
    Muss der Prozess mit Deinem Programm kommunizieren?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo,

    danke für die Hilfe. Nun Funktioniert es:

    VB.NET-Quellcode

    1. Private Function zabwrite(zabitem As String, zabvalue As String) As Boolean
    2. Dim CArgs As String = "-c/etc/zabbix/zabbix_agentd.conf -k " & zabitem & " -o " & Chr(34) & zabvalue & Chr(34) '& " >/dev/null"
    3. Try
    4. Using myProcess As New Process()
    5. myProcess.StartInfo.UseShellExecute = False
    6. myProcess.StartInfo.FileName = "zabbix_sender"
    7. myProcess.StartInfo.Arguments = CArgs
    8. myProcess.StartInfo.CreateNoWindow = True
    9. myProcess.Start()
    10. End Using
    11. Return True
    12. Catch e As Exception
    13. Console.WriteLine((e.Message))
    14. Return False
    15. End Try
    16. End Function
    17. Sub Main(args As String())
    18. 'TEST: Zabbix Wert senden
    19. If zabwrite("test.item", "Progamm started") Then
    20. Console.WriteLine("good zabbix fine")
    21. Else
    22. Console.WriteLine("error")
    23. End If
    24. end sub