Hot News:

Unser Angebot:

  Foren auf CAD.de
  VBasic / vb.net / vbs / wsh
  Steuerung eines DOS Programms

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
Autor Thema:  Steuerung eines DOS Programms (1707 mal gelesen)
Stelli1
Ehrenmitglied
Verm.-Ing.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2010, Rasterdesign
MapGuide 6.5 - 2010
Oracle 9i,10g Enterprise
autodesk Topobase 2-2010
VS6, VS.net 2010

erstellt am: 10. Aug. 2009 10:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich möchte aus einer Datenbank zur Steuerung der Benutzerrechte für einen Apache WebServer eine Datei "htusers" erzeugen. In der Datei steht
User1:RxvCRMqtdryys
User2:RxvCRMqtdryys

Das Passwort ist verschlüsselt (so weit ich weiss als SHA1). Im Beispiel ist es das Passwort "test".

Für den WebServer gibt es das Kommadozeilen Programm HTPASSWD.EXE. Hier kann man nun das Passwort mit Wiederholung eintippen und es wird ein Eintrag in die Datei htusers vorgenommen.
Da ich in der Datenbank aber die realen Passwörter verwalten will, möchte ich quasi dieses Dienstprogramm fernsteuern um das Passwort zu übergeben.

Es gelingt mir aber nicht die Standardeingabe aus dem Programm zu steuern.
Gleichzeitig kommt noch die Frage auf wie man den Standard Output im Programm verwerten kann.
Hier mal der noch nicht funktionierende Code

Code:

        Dim InputStream As StreamWriter
        Dim OutStream As StreamReader

        Dim ExeDatei As String = "C:\Projekte\Entw\VS.NET\HTUser\htpasswd.exe"
        Dim Proginfo As New System.Diagnostics.Process

        Dim StartInfo As New ProcessStartInfo
        StartInfo.CreateNoWindow = False
        StartInfo.FileName = ExeDatei
        StartInfo.Arguments = "-c C:\Projekte\Entw\VS.NET\HTUser\htusers.txt User3"
        'StartInfo.RedirectStandardOutput = True
        StartInfo.RedirectStandardInput = True
        StartInfo.UseShellExecute = False

        Proginfo.StartInfo = StartInfo

        Proginfo.Start()
        'OutStream = Proginfo.StandardOutput
        InputStream = Proginfo.StandardInput
        InputStream.WriteLine("test" & vbCrLf)
        InputStream.WriteLine("test" & vbCrLf)
        InputStream.Flush()



Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cartoonhero
Mitglied



Sehen Sie sich das Profil von cartoonhero an!   Senden Sie eine Private Message an cartoonhero  Schreiben Sie einen Gästebucheintrag für cartoonhero

Beiträge: 246
Registriert: 21.04.2004

erstellt am: 10. Aug. 2009 10:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Stelli1 10 Unities + Antwort hilfreich

Hallo ...

warum verwendest du nicht den parameter -b von htpasswd ?

damit kannst das passwort gleich beim programm aufruf mitübergeben

htpasswd -b -c <passwdfile> <username> <password>

wobei du ab dem zweiten eintrag da -c weglassen solltest, da sonst die bereits erstellte datei überschreiben wird und du immer nur den letzten eintrag drin hast.

hilft jetzt zwar nicht zum lösen der generellen frage wie man standardein und -ausgang anspricht, sollte aber das konkrete problem lösen ...

gruss
cartoonhero

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Stelli1
Ehrenmitglied
Verm.-Ing.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2010, Rasterdesign
MapGuide 6.5 - 2010
Oracle 9i,10g Enterprise
autodesk Topobase 2-2010
VS6, VS.net 2010

erstellt am: 10. Aug. 2009 13:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,
erst mal schon danke für die Antwort
Zitat:
Original erstellt von cartoonhero:
warum verwendest du nicht den parameter -b von htpasswd ?


Bei der mir vorliegenden HTPASSWD.EXE wird der Parameter -b nicht unterstützt. Wo bekomme ich deine Version her ?

Für das eine Problem wäre das eine (gute!) Lösung.
Ich benötige diese Technik allerdings auch für andere Aufgaben. z.B. soll ein SQLLoaderfile per Batch eingelesen werden. Dafür möchte ich noch den Output umlenken um das Protokoll im Programmfenster anzuzeigen.

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cartoonhero
Mitglied



Sehen Sie sich das Profil von cartoonhero an!   Senden Sie eine Private Message an cartoonhero  Schreiben Sie einen Gästebucheintrag für cartoonhero

Beiträge: 246
Registriert: 21.04.2004

erstellt am: 10. Aug. 2009 13:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Stelli1 10 Unities + Antwort hilfreich

also ...

ich würde mir hier das installationspaket für den Apache für windows runterladen (z.b. apache_2.2.13-win32-x86-no_ssl.msi)

und da ich ihn ja NICHT installieren will würde ich mir ein verzeichnis c:\apachetmp anlegen und die dateien dahin entpacken mit:

msiexec /a apache_2.2.13-win32-x86-no_ssl.msi TARGETDIR=c:\apachetmp /qb

jetzt findet man in Verzeichnis

C:\apachetmp\program files\Apache Software Foundation\Apache2.2\bin

die htpasswd.exe

rauskopieren und das Verzeichnis C:\apachetmp löschen ...

gruss
cartoonhero

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MWN
Mitglied
Dipl.-Ing.


Sehen Sie sich das Profil von MWN an!   Senden Sie eine Private Message an MWN  Schreiben Sie einen Gästebucheintrag für MWN

Beiträge: 492
Registriert: 14.02.2007

erstellt am: 10. Aug. 2009 15:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Stelli1 10 Unities + Antwort hilfreich

Hallo (Fan-)Gemeinde  ,

ich würd das so machen:

Code:
Private Sub cmbSenden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbSenden.Click
        Dim ip As String
        Dim text As String
        ip = txtIP.Text
        text = txtText.Text
        Dim p As Process
        p = New Process
        With p.StartInfo
            .FileName = Environ("COMSPEC")
            .CreateNoWindow = True
            '.Arguments = "Net Send " & ip & " " & text
            .RedirectStandardInput = True
            .RedirectStandardOutput = True
            .RedirectStandardError = True
            .UseShellExecute = False
        End With
        Me.WindowState = FormWindowState.Minimized
        p.Start()
        Dim StdIn As System.IO.StreamWriter = p.StandardInput
        StdIn.AutoFlush = True
        Dim StdOut As System.IO.StreamReader = p.StandardOutput
        Dim StdErr As System.IO.StreamReader = p.StandardError
        Dim sTemp As String
        sTemp &= StdOut.ReadLine() & vbNewLine
        sTemp &= StdOut.ReadLine() & vbNewLine
        sTemp &= StdOut.ReadLine() & vbNewLine
        StdIn.WriteLine("ECHO OFF")
        StdIn.WriteLine("cd\")
        StdIn.WriteLine("Net Send " & ip & " " & text & "")
        StdIn.WriteLine("Exit")
        'Do Until p.HasExited
        '    System.Windows.Forms.Application.DoEvents()
        '    System.Threading.Thread.Sleep(1000)
        'Loop
        If p.WaitForExit(20000) = False Then
            p.Kill()
            MsgBox("Die Gegenstelle antwortet nicht!")
            txtText.Clear()
            StdIn.Close()
            StdOut.Close()
            StdErr.Close()
            Exit Sub
        End If
        sTemp = StdOut.ReadLine
        sTemp = StdOut.ReadLine
        Dim sOutput As String
        sOutput = StdOut.ReadToEnd
        StdIn.Close()
        StdOut.Close()
        StdErr.Close()
        sOutput = Strings.Left(sOutput, _
                            sOutput.IndexOf(vbNewLine & "Exit"))
        sOutput = System.Text.Encoding.GetEncoding(850).GetString( _
        System.Text.Encoding.Default.GetBytes(sOutput))
        MessageBox.Show(sOutput, "Ausgabe")
        'MsgBox("Nachricht erfolgreich gesendet")
        txtText.Clear()
        If Not p.HasExited Then
            p.Kill()
        End If
        p.Close()
        txtIP.Text = ip
    End Sub

Das Beispiel hier ist in VB.NET geschrieben und ein kleines "Messanger" - Tool mittels net-send realisiert!
Viel Spass...

Tobias

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Stelli1
Ehrenmitglied
Verm.-Ing.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2010, Rasterdesign
MapGuide 6.5 - 2010
Oracle 9i,10g Enterprise
autodesk Topobase 2-2010
VS6, VS.net 2010

erstellt am: 13. Aug. 2009 10:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

danke für die Antworten. Da kommt man vpm Stöcken aufs Hölzchen

@cartoonhero: Das mit der HTPASSWD vom Apache klappt.
Da konkrete Problem hab ich jetzt so gelöst das die Daten quasi per Batch in eine Datei geschrieben werden die ich dann wieder lese.
Hab aber auch noch gefunden das .Net auch einen Algorithmus zur Verfügung stellt.

Code:
System.Security.Cryptography.MD5

Damit hab ich aus Zeitmangel noch nicht versucht.

@Tobias: Danke für den Ansatz. Das klappt so wenn man die Ein- und Ausgabe kennt.
Habe gesehen das es da auch noch ein paar Events gibt

Code:
System.Diagnostics.Process.OutputDataReceived etc

Ich denke das ich das mal Teste um das Programm so auzulegen das es während der Auführung a Alle Ausgaben auffängt, b auf Fehler reagiert und c noch die Möglichkeit besteht das Dienstprogramm per Cancel zu stoppen.

Muss mich gerade anderen Problemen widmen so das ich micht hierzu später nochmal melde.

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz