Einträge zu Tag: Regex

Mit PHP auf ganze Worte oder ganze Sätze kürzen

Erstellt: 05.07.2011 10:59

Es kann mal sein, dass man den Anfang eines Textes braucht. In diesem Fall leistet "substr()" alleine zwar grundsätzlich den Dienst, dass es den String kürzt, jedoch meistens unschön zwischen Wörtern oder Sätzen.

Das einfachste ist es, mit "substr()" ein wenig mehr Zeichen dazu zu geben und danach mit "preg_replace()" den Rest abzuschneiden bis zum Wortende oder Satzende.

Hierzu zwei Beispiele:

200 Zeichen vom String nehmen und bis zum nächsten Wortende abschneiden. (Annahme: Jedes Wort wird getrennt von einem Leerzeichen.)

$string = preg_replace("/[^ ]*$/", '', substr($string, 0, 200));

400 Zeichen vom String nehmen und bis zum nächsten Satz abschneiden. (Annahme: Jeder Punkt trennt einen Satz.)

$string = preg_replace("/[^.]*$/", '', substr($string, 0, 400));

Diese Lösung ist hat einen kleinen Haken, ist ein Wort oder Satz länger als die Stringlänge bekommt man einen leeren String zurück.
In den meisten Fällen, sollte es jedoch seinen Dienst tun.



Tagged: HTML/CSS PHP Regex

1 Kommentar | Nach oben

Gelöschte oder veränderte Dateien oder Bibliotheken in Gebrauch finden

Erstellt: 24.06.2011 16:25

Regelmässig gibt es Updates welche Sicherheitslücken stopfen.
Da Dateien und Bibliotheken welche in Gebrauch sind im Speicher bleiben, auch wenn sie schon längst gelöscht sind, bleiben die Sicherheitslücken jedoch bestehen, auch wenn die Dateien oder Biblitotheken schon lange nichtmehr auf der Festplatte existieren.

Hinweise dazu liefert "lsof", "lsof" zeigt Dateien in Benutzung an. Dateien mit neuer Inode sind markiert mit "(path inode=<Inode-Nummer>)", gelöschte Dateien mit "(deleted)" oder "DEL".

Entsprechend filtert man mit einem Regex:

# lsof | grep -Ei "(del|inode=)"

(Hier ein paar Beispieleinträge, welche darauf Hinweisen, dass man zum Beispiel Apache2 mal neu starten sollte.)

apache2    3237 www-data   11w      REG                9,3        0    8028776 /var/run/apache2/ssl_mutex (deleted)
apache2    3237 www-data  mem       REG                9,3             7918453 /usr/lib/libapr-1.so.0.2.12 (path inode=7915038)
apache2    3237 www-data  DEL       REG                0,9          1361867607 /dev/zero

Debian liefert dazu sogar ein Analysetool, "checkrestart", im Paket "debian-goodies".

Die Benutzung ist äusserst simpel und liefert auch direkt einen Tipp:

# checkrestart
Found 1 processes using old versions of upgraded files
(1 distinct program)
(1 distinct packages)

Of these, 1 seem to contain init scripts which can be used to restart them:
The following packages seem to have init scripts that could be used
to restart them:
snmpd:
        1902    /usr/sbin/snmpd

These are the init scripts:
/etc/init.d/snmpd restart

Soweit, viel Erfolg!



Tagged: Debian Linux Regex Security

Kommentar verfassen | Nach oben

IP von Denyhosts entbannen

Erstellt: 24.06.2011 13:50

Ist eine IP erstmal auf der Liste von Denyhost, reicht es nicht, die IP einfach aus /etc/hosts.deny wieder zu entfernen, sie wird von Denyhosts sofort wieder eingetragen.

Um eine IP wieder zu entfernen, geht man deshalb wie folgt vor:

1. Denyhosts stoppen:

# /etc/init.d/denyhosts stop

2. IP von /etc/hosts.deny entfernen.

3. IP im Programmverzeichnis greppen und entsprechende Zeilen aus den gefundenen Files löschen:

# grep "xxx.xxx.xxx.xxx" /var/lib/denyhosts/*

...Oder mit sed die Zeilen direkt löschen:

# sed -i.old /xxx.xxx.xxx.xxx/d /var/lib/denyhosts/*

Das .old hinter dem "-i" erzeugt für alle Fälle noch eine unveränderte Backup-Datei mit der Endung .old. (Danke für den Tipp an Pfünder!)

4. Denyhosts starten:

# /etc/init.d/denyhosts start



Tagged: Debian Linux Netzwerk Regex Software

Kommentar verfassen | Nach oben

In Bash einen String aus HTML/XML-Tags extrahieren

Erstellt: 21.01.2011 15:30

Will man diverse Files auswerten welche man z.B. über "wget" oder anderes aus dem Web besorgt hat, ist es immer mal wieder nötig Werte zu bekommen, welche zwischen zwei HTML- oder XML-Tags liegen. Um diesen Wert zwischen diesen zwei Tags zu extrahieren, leistet "sed" gute Dienste.

Hier die Beispieldatei "xmlfile" aus welchem der Wert "WAHTiNEED" der zwischen den beiden Tags "<key></key>" liegt herausgefiltert werden soll:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<LoginResponse xmlns="urn:internalvim25"><returnval><key>WHATiNEED</key><userName>username</userName><fullName>username</fullName><loginTime>1970-06-25T13:51:06.256885+01:00</loginTime><lastActiveTime>1970-06-25T13:51:06.256885+01:00</lastActiveTime><locale>en</locale><messageLocale>en</messageLocale></returnval></LoginResponse>
</soapenv:Body>
</soapenv:Envelope>

...und hier der sed-String:

sed -n -e 's/.*<key>\(.*\)<\/key>.*/\1/p' Filename

...welcher "WHATiNEED" erfolgreich filtert:

$ sed -n -e 's/.*<key>\(.*\)<\/key>.*/\1/p' xmlfile
WHATiNEED



Tagged: Bash HTML/CSS Linux Regex

Kommentar verfassen | Nach oben

Umlaute ersetzen in Perl

Erstellt: 07.01.2011 10:00

Umlaute können ein Problem sein, eine Möglichkeit dieses zu umgehen ist es die Umlaute zu ersetzen.

Hier im Beispiel werden die Umlaute in einen Hash gepackt, jeweils mit dem Zeichen gegen welches sie ersetzt werden sollen:

my $string = 'Mit so vielen Umlauten wie "äöüÖÜÄ" muß es ja schief gehen!';

my %umlaute = ("ä" => "ae", "Ä" => "Ae", "ü" => "ue", "Ü" => "Ue", "ö" => "oe", "Ö" => "Oe", "ß" => "ss" );
my $umlautkeys = join ("|", keys(%umlaute));
$string =~ s/($umlautkeys)/$umlaute{$1}/g;

print $string;

Die Ausgabe:

Mit so vielen Umlauten wie "aeoeueOeUeAe" muss es ja schief gehen!



Tagged: Perl Regex

1 Kommentar | Nach oben

« ältere Einträge