Fehler 619 bei Einwahl über das DFÜ-Netzwerk vor Windows-Anmeldung

Unsere neuen Notebooks wurden mit UMTS-Sticks von Vodafone (Modell K3715) ausgestattet, was im Vergleich zu den vorher genutzten PCMCIA-Karten eine deutliche Verbesserung darstellt (z.B. ist die Treibersoftware direkt auf dem USB-Stick enthalten). Allerdings gab es ein Problem: die Einwahl vor der Windows-Anmeldung funktionierte nicht.

Hintergrund: Wir nutzen den SecureClient von CheckPoint, um uns vor der Windows-Anmeldung in ein VPN einzuwählen, das uns eine Anmeldung an der Domäne über das Internet ermöglicht.

Nun kam bei den Einwahlversuchen mittels Über das DFÜ-Netzwerk anmelden ständig der Fehler 619. Nach der Anmeldung an Windows und dem Start der Vodafone-Software Mobile Connect funktionierte die Einwahl jedoch tadellos. Vor dem Start der Software konnte man manuell jedoch auch keine Verbindung herstellen (gleicher Fehler 619).

Nach langem Suchen und Rumprobieren (zunächst hatte ich an fehlende Dienste gedacht) habe ich nun hier die Lösung gefunden: UMTS über eplus – Fehler 619 ?!? – onlinekosten.de Community.

Man muss dem Modem, das für die DFÜ-Verbindung konfiguriert ist (in meinem Fall das HUAWEI Mobile Connect – 3G Modem in den erweiterten Eigenschaften den folgenden Initialisierungbefehl mitgeben: +CGDCONT=1,"IP","web.vodafone.de" (siehe Screenshot). Und schon läuft’s 🙂

Initialisierungsbefehl UMTS-Stick Vodafone

LaTeX-Vorlage für meine Masterarbeit an der Ohm-Hochschule Nürnberg

Auf Basis meiner LaTeX-Vorlage für meine Diplomarbeit habe ich heute eine erweiterte Vorlage für meine Masterarbeit an der der Ohm-Hochschule Nürnberg erstellt.

Hauptsächlich habe ich die Dateistruktur überarbeitet, ein paar neue Befehle hinzugefügt und einige Warnings aufgrund veralteter Pakete entfernt. Einige Tipps aus den Kommentaren meiner Leser habe ich auch eingebaut. Vielen Dank dafür! Für weitere Anregungen bin ich immer dankbar.

Hier nochmal kurz die wichtigsten Features meiner Vorlage:

  • ein nettes Deckblatt
  • Inhalts-, Abbildungs-, Listings-, Tabellen- und Abkürzungsverzeichnis
  • eidesstattliche Erklärung, Glossar und Abstract
  • DIN-konformes Literaturverzeichnis
  • eingebundene Quelltexte
  • lange Tabellen über mehrere Seiten Wenn dir diese Vorlage geholfen und gefallen hat, flattre sie doch einfach hier:

Downloads

24.05.2015: Sourcen auf GitHub veröffentlicht. 17.09.2009: Lizenz hinzugefügt. 03.06.2009: Update der Vorlage. Ich habe heute mal die neuste Version der Vorlage hochgeladen, in der alle mir (aus Mails und Kommentaren) bekannten Fehler behoben sind.

Wenn du willst, kannst du dich an der Weiterentwicklung der Vorlage beteiligen. Die Sourcen sind komplett auf GitHub verfügbar: StefanMacke/latex-vorlage-masterarbeit.

Wenn du mich beim Betreiben dieser Seite und der Weiterentwicklung der Vorlage unterstützen willst, kannst du mir gerne über PayPal etwas spenden.

Spende mir einen Betrag deiner Wahl per PayPal

Creative Commons License
Dieser Werk bzw. Inhalt ist unter einer Creative Commons-Lizenz lizenziert.

Excel: Beim Drucken den aktuellen Benutzernamen in die Fußzeile eintragen

Wir haben eine kleine Excel-Anwendung, deren Ergebnisse ab und an mal ausgedruckt werden müssen. Dabei soll jedoch ersichtlich sein, welcher konkrete Benutzer die Ergebnisse ausgedruckt hat. Daher soll bei jedem Druck der Benutzername des aktuell angemeldeten Benutzers in die Fußzeile des Excel-Dokuments eingetragen werden.

Mit einem kleinen Makro, das man einfach der aktuellen Arbeitsmappe hinzufügen kann, und das den besonderen Namen Workbook_BeforePrint bekommt, ist diese Anforderung recht einfach umzusetzen (obwohl zum Ermitteln des Benutzernamens die Windows-Funktion angesprochen werden muss, daher die kryptischen Befehle am Anfang):

Excel-Makro beim Drucken einer Datei ausführen

Option Explicit Private Declare Function WNetGetUser Lib "mpr.dll" Alias "WNetGetUserA" (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long Private Const NO_ERROR = 0 Private Const ERROR_NOT_CONNECTED = 2250& Private Const ERROR_MORE_DATA = 234 Private Const ERROR_NO_NETWORK = 1222& Private Const ERROR_EXTENDED_ERROR = 1208& Private Const ERROR_NO_NET_OR_BAD_PATH = 1203& Private Sub Workbook_BeforePrint(Cancel As Boolean) Dim strBuf As String, lngUser As Long, strUn As String, nameEnd As Long strBuf = Space$(255) lngUser = WNetGetUser("", strBuf, 255) If lngUser = NO_ERROR Then nameEnd = InStr(strBuf, vbNullChar) strUn = Left(strBuf, nameEnd - 1) End If With ActiveSheet.PageSetup .LeftFooter = "" .LeftFooter = "erstellt von " & strUn & " am &D" End With End Sub

In einer Batch-Datei die Größe einer Datei ermitteln

Heute musste ich in unserem Anmeldescript eine neue Softwareversion verteilen. Leider konnte ich die Entscheidung, ob die aktuellste Version schon installiert ist, nicht von fehlenden oder zusätzlichen Dateien abhängig machen, sondern nur anhand der Dateigröße der geänderten Dateien. Dafür musste ich also eine Möglichkeit finden, in meiner Batchdatei diese Dateigröße zu ermitteln.

Nach ein paar Versuchen, bin ich bei dieser Variante gelandet:

rem prüfen, ob schon die neuste Version vorliegt (über Dateigröße) set Datei=C:\DasProgramm\DieDatei.exe set Dateigroesse=272530 for /f "tokens=1-3" %%i in ('dir %Datei% /-c ^|find "Datei(en)" ^|find "Bytes"') do set Groesse=%%k rem String in Zahl umwandeln (Leerzeichen entfernen) set /a Groesse=%Groesse%/1 if "%Groesse%"=="%Dateigroesse%" echo Programm ist bereits aktuell if not "%Groesse%"=="%Dateigroesse%" xcopy "Z:\DasProgramm" "C:\DasProgramm\" /s /y

Änderungen an der Remotedesktopverbindung durch das Service Pack 3 (SP3)

Seit wir auf unseren PCs das Windows XP Service Pack 3 verteilt haben, sind mir zwei seltsame Dinge im Zusammenhang mit der Remotedesktopverbindung aufgefallen:

  1. Der mstsc-Schalter /console funktioniert nicht mehr.
  2. Die Verbindungen zu Windows XP-PCs werden nach 15 Minuten getrennt.

Die Lösung:

  1. /console wurde durch /admin ersetzt (warum auch immer).
  2. Eine Gruppenrichtlinie (Administrative Vorlagen -> Windows-Komponenten -> Terminaldienste -> Sitzungen -> Zeitlimit für aktive, aber im Leerlauf befindliche Terminaldienstesitzungen festlegen) schafft Abhilfe.
    Gruppenrichtlinie zum RDP-Sitzungslimit

Suche nach Wörtern mit 3 Buchstaben im MediaWiki erlauben

Die MediaWiki-Software erlaubt es Benutzern normalerweise nicht, nach Wörtern mit 3 Buchstaben zu suchen (es müssen mindestens 4 Buchstaben eingegeben werden). Begründet wird dies sicherlich durch die großen DB-Indizes, die hierfür nötig sind. In kleinen Unternehmenswikis sollte sich der Speicherverbrauch und die Laufzeiterhöhung allerdings in Grenzen halten.

Um eine Suche nach Wörtern mit 3 Buchstaben zu ermöglichen, sind die folgenden Schritte nötig (via MySQL-Wiki und FED-Wiki):

  1. MySQL-Server konfigurieren.
    Den folgenden Eintrag in die my.cnf im Abschnitt [mysqld] eintragen und den MySQL-Server neustarten:
    ft_min_word_len = 3
  2. Indizes der vorhandenen Tabellen aktualisieren.
    Mittels REPAIR TABLE tabelle QUICK; die Indizes aller vorhandenen MediaWiki-Tabellen erneuern.
  3. MediaWiki konfigurieren.
    In der LocalSettings.php den folgenden Eintrag hinzufügen:
    $wgDBminWordLen = 3;

PowerShell: Liste aller Dateitypen in einem Verzeichnis erstellen

Heute musste ich herausfinden, welche verschiedenen Dateitypen (also Dateiendungen wie *.jpg usw.) es innerhalb einer Verzeichnisstruktur gibt. Wieder mal eine einfache Aufgabe für die PowerShell:

gci -Recurse | % {$_.Extension.tolower()} | sort | unique

  1. gci -Recurse liefert alle Dateien in allen Unterverzeichnissen
  2. % {$_.Extension.tolower()} gibt von diesen lediglich die Dateierweiterung in Kleinbuchstaben aus (% = foreach)
  3. sort sortiert diese Liste der Dateierweiterungen
  4. unique liefert die eindeutigen Dateiendungen

Beispielausgabe (ohne -Recurse):

PowerShell: Liste aller Dateitypen in einem Verzeichnis erstellen

PowerShell: Verfügbaren Hauptspeicher (RAM) für mehrere PCs ermitteln

Heute brauchte ich eine Liste all unserer PCs mit ihrem verfügbaren/installierten Hauptspeicher. Nichts leichter als das, denkt der PowerShell-Benutzer:

# Checks every computer in the given array for its amount of installed RAM # ---------------------------------------------------------------------------- # $pcs = @("pc1", "pc2"); foreach ($pc in $pcs) { $pcInfo = gwmi win32_computersystem -computername $pc; if ($pcInfo -ne $null) { write-host ($pc + ": Installed RAM " + [Math]::round($pcInfo.totalphysicalmemory / (1024 * 1024), 0) + " MB") -foregroundcolor "green"; } else { write-host ($pc + ": Could not read computer information") -foregroundcolor "magenta"; } }

Mit meinen eigenen Funktionen kann ich dann das Array sogar noch automatisch aus dem Active Directory füllen lassen und vor dem Ermitteln der PC-Informationen prüfen, ob der PC online ist.

Auslesen des Inhalts einer durch Login geschützten Website mit Java

Wenn eine Website eine POST-Authentifizierung erfordert (bspw. über ein Login-Formular) um Daten herunterzuladen, kann man dies mit den üblichen Java-Klassen lösen (z.B. mit URLConnection, siehe hier: Sending a POST Request Using a URL). Wenn aber ein Session-Konzept mit Cookies mit ins Spiel kommt, wird dies schon schwieriger.

Wie gut, dass es die Apache Commons-Bibliotheken gibt. Damit geht es recht einfach (wie auf Tutorials.de beschrieben). Eine nette Gegenüberstellung der beiden Methoden gibt es hier: A Comparison of java.net.URLConnection and HTTPClient.

package JavaTest; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.cookie.CookiePolicy; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; public class PostTest { public static void main(String[] args) { try { HttpClient client = new HttpClient(); GetMethod getMethod1 = new GetMethod("http://example.org/geheim.php"); client.executeMethod(getMethod1); System.out.println("Aufruf ohne Login -----------------"); System.out.println(getMethod1.getResponseBodyAsString()); System.out.println("-----------------------------------"); PostMethod postMethod1 = new PostMethod("http://example.org/login.php"); postMethod1.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); postMethod1.addParameter("name", "stefan"); postMethod1.addParameter("pass", "geheim"); client.executeMethod(postMethod1); System.out.println("Login -----------------------------"); System.out.println(postMethod1.getResponseBodyAsString()); System.out.println("-----------------------------------"); client.executeMethod(getMethod1); System.out.println("Aufruf nach Login -----------------"); System.out.println(getMethod1.getResponseBodyAsString()); System.out.println("-----------------------------------"); } catch (Exception e) { e.printStackTrace(); } } }

Wichtig wäre vielleicht noch, alle hierfür benötigten Bibliotheken einzubinden, damit man sich die vielen ClassNotFound-Exceptions sparen kann: