Benutzerliste aus LDAP/ActiveDirectory erstellen

Mittels python lassen sich Benutzer aus einem LDAP-Verzeichnis (bzw. ActiveDirectory) einfach auslesen und formatiert ausgeben:

#!/usr/bin/python
 
# import ldap module
import sys, ldap
 
# Define the name to search
searchstring="*"
 
# connection settings
ldap_url = "ldap://localhost"
binddn = "CN=LDAP User,OU=User Accounts,DC=example,DC=org"
pw = "secret"
 
# Search settings
basedn = "OU=User Accounts,DC=ad,DC=example,DC=net"
searchFilter = "(&(cn={searchstring}))".format (searchstring=searchstring)
searchAttribute = ['cn', 'sAMAccountName', 'displayName', 'mail']
searchScope = ldap.SCOPE_SUBTREE
 
# bind to the server
l = ldap.initialize(ldap_url)
try:
  l.simple_bind_s(binddn, pw)
except ldap.INVALID_CREDENTIALS:
  print "Your username or password is incorrect."
  sys.exit(0)
except ldap.LDAPError, e:
  if type(e.message) == dict and e.message.has_key('desc'):
    print e.message['desc']
  else:
    print e
  sys.exit(0)
 
# query LDAP
try:
  resultId = l.search(basedn, searchScope, searchFilter, searchAttribute)
  result_type, result_data = l.result(resultId)
 
  for ldap_dn,ldapuser in result_data:
    print ldap_dn
    #print ('username={ldap_sAMAccountName},)
    print ('username={ldap_sAMAccountName}\ndisplayName={ldap_displayName}\nmail={ldap_mail}\n\n').format (ldap_sAMAccountName = ldapuser['sAMAccountName'][0], ldap_displayName = ldapuser['displayName'][0], ldap_mail = ldapuser['mail'][0],)
 
except ldap.LDAPError, e:
  print e
 
# close connection
l.unbind_s()

Die Parameter unter „connection settings“ sind:

searchstring Der Name nach dem gesucht wird
ldap_url Die Adresse vom LDAP-Server
binddn Die DN vom Benutzer, welcher sich am LDAP-Server anmeldet (i.dR. ein „read-only“ user)
pw Passwort für den oben genannten Benutzer
basedn Fange ab hier mit der Suche an; das kann der root Pfad sein, besser ist es aber aber einen Pfad mit den aktiven Accounts einzuschränken, damit deaktivierte Benutzer nicht drin sind
searchFilter Das LDAP-Suchmuster; anstelle von „givenName“ kann beispielsweise auch „cn“ oder „displayName“ sein
searchScope Hier wird definiert ob nur im aktuellen LDAP-Zweig oder rekursiv gesucht wird

 

Schnellstartleiste aus Windows XP wiederherstellen

Die Schnellstartleiste aus Windows XP war eine praktische Sache; weniger praktisch ist die neue „Pinbar“ in Windows 7. Und auf den ersten Blick kann man diese Symbollieste zwar anlegen, jedoch nicht an den linken Rand (neben den Startbutton) ziehen.

Der Trick liegt darin, dass man nicht die Symbolleiste, sondern die Programmleiste verschieben muss:

  • Rechtsklick auf die Taskleiste und „Taskleiste fixieren“ deaktiveren
  • Nun via Rechtsklick auf die Taskleiste -> Symbolleisten beliebige Symbolleisten anlegen
  • Dann die Programmleiste ganz an den rechten Rand ziehen; die Symbolleisten wandern nach links!

quicklaunch

Quellen:

redhat/CentOS: vmware-tools mit yum installieren

Das installieren der vmware-tools auf Linux Rechnern, kann manchmal lästig sein. Was viele nicht wissen:
Anstelle der manuellen Installation kann man das Packet: open-vm-tools
installieren (via: yum install open-vm-tools).

Das wird von vmware fully supported.

Bei CentOS6 ist es im EPEL repository drin, ab CentOS7 sogar im core repository.

Ein ansible-playbook dafür könnte so aussheen:

---
- hosts: vmware-servers
  tasks:
    # PREREQUISITES: For RHEL < 7 we need the EPEL repository
  - name: install the EPEL repo
    yum: pkg=epel-release state=latest
    when: (ansible_os_family == "RedHat" and ansible_distribution_major_version == "6")
 
    name: install the EPEL repo
    yum: name=https://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm
    when: (ansible_os_family == "RedHat" and ansible_distribution_major_version == "5")
 
 
    # install open-vm-tools
  - name: install open-vm-tools
    yum: pkg=open-vm-tools state=latest
    when: ansible_os_family == "RedHat"
 
  - name: install open-vm-tools
    apt: pkg=open-vm-tools state=latest
    when: ansible_os_family == "Debian"
 
 
 
  # startup
  - name: ensure vmware-tools are running and started automatically
    service: name=vmtoolsd state=started enabled=yes
    when: ansible_os_family == "RedHat"
 
  - name: ensure vmware-tools are running and started automatically
    service: name=open-vm-tools state=started enabled=yes
    when: ansible_os_family == "Debian"

WordPress: Welches Theme/Plugins wird verwendet?

Wenn man herausfinden will, welches WordPress-Theme und/oder Plugins verwendet werden kann man dies ganz einfach auf der Seite: What WordPress Theme Is That? herausfinden.

Eine weitere Seite ist der WordPress Theme Detector.

Quelle: How to Find Out What WordPress Theme a Site is Using

OpenVPN: Keine Verbindung unter Windows 7

Unter Windows 7 kommt keine Verbindung mit OpenVPN zustande.

Dies liegt an den Rechte-Einschränkungen, welche ab Windows 7 eingeführt wurden.
Damit OpenVPN weiterhin läuft muss man die folgenden Dinge beachten:

  • Windows UAC abschalten
  • Den OpenVPN installer als Administrator ausführen
  • Das config Verzeichnis muss vom Benutzerverzeichnis in das Installationsverzeichnis kopiert werden. Auf diesem Verzeichnis dem Benutzer Vollzugriff geben.
  • Im openvpn config file müssen diese zwei Zeilen hinzugefügt werden:
route-method exe
route-delay 2
  • Das Programm OpenVPN-Gui.exe muss mittels Rechtsklick angewählt werden, dann „als Administrator starten“ anklicken (sollte nur notwendig sein, falls UAC nicht abgeschaltet wurde)

avira: PopUps bei der Free-Version deaktivieren

Bei der kostenlosen Version der Antiviren-Software "Avira" erscheinen alle paar Stunden popups, welche zum Kauf der Premium-Version animieren wollen.

Dies nervt und kann mittels einer Windows-Sicherheitsrichtlinie deaktiviert werden.

Da die Windows-Sicherheitsrichlinie einen registry Eintrag hinzufügt und dies normalerweise von avira blockiert wird, muss man zuerst die registry überwachung ausschalten (kann danach wieder aktiviert werden):

  • Zuerst macht man eine rechtsklick auf das Avira-Taskleistensymbol und wählt "Virenschutz verwalten"
  • Nun geht man auf Extras -> Konfiguration
  • Links, beim TAB: "Allgemeines", geht man auf: "Sicherheit" und deaktiviert: "Dateien und Registrierungseinträge vor Manipulation schützen"
  • OK

Nun kommt der eigentliche Teil:

  • Unter Start -> Systemsteuerung -> Verwaltung wählt man: "Lokale Sicherheitsrichtlinie"
  • Nun erstellt mittels Rechtsklick auf: "Richtlinien für Softwareeinschränkung" -> "Neue Richtlinien für Softwareeinschränkung erstellen" eine neue Richtlinie.
  • Nun macht man einen Rechtsklick auf: "Zusätzliche Regeln" und wählt: "Neue Pfadregel".
  • Nun geht man auf "Durchsuchen" und sucht im Avira Programmverzeichnis die Datei: "avnotify.exe", wählt bei Sicherheitsstufe: "Nicht erlaubt" und bestätigt mit OK.

Nun hören die nag-screens auf.

[stextbox id=“note“ caption=“Hinweis“]Das deaktivieren von „avnotify.exe“ führt auch dazu, dass avira keine erweiterten Informationen über einen Virus anzeigen kann, wenn einer gefunden wurde.
Allerdings dürtfe man, wenn man nach dem Namen des Virus googelt genügend Informationen finden. ;)[/stextbox]

Quelle: elitekiller.com: [http://www.elitekiller.com/files/disable_antivir_nag.htm|Disable the Avira AntiVir avnotify nag screen]

„Gott-Modus“ aktivieren

Per geheimen Schalter kann man eine Art "Gott-Modus"m in Windows aktivieren, welcher Zugriff auf alle Funktionen in der Systemsteuerung gibt.

Dafür legt man einen neuen Ordner an und benennt den um in:

GottModus.{ED7BA470-8E54-465E-825C-99712043E01C}

Nun ändert sich das Symbol und wenn man den Ordner öffnet, kann man alle Einstellungen der Systemsteuerung direkt erreichen. 🙂

Der Name vor dem ‚.‘ ist übrigens egal, wichtig ist nur die Zeichenkette in den geschweiften Klammern.

Quelle: [http://www.pcwelt.de/ratgeber/Per-geheimen-Schalter-den-Gott-Modus-einschalten-Geheime-Funktionen-enthuellt-58591.html|pcwelt]

ConnectionString auflösen

Parameter zum Zugriff auf eine Datenbank werden häufig in sog. „URL Connection-Strings“ angegeben, z.B.:
mysql://username:password@localhost/databasename

Diese kann man ganz einfach mit der Funktion parse_url auflösen; beim Datenbank-Namen muss der beginnende ‚/‘ noch mit basename entfernt werden:

$db_url = 'mysql://username:password@localhost/databasename';
$DBConnectionString = parse_url($db_url);
 
$dbUser = $DBConnectionString['user'];
$dbPass = $DBConnectionString['pass'];
$dbHost = $DBConnectionString['host'];
$dbName = basename($DBConnectionString['path']);

Quelle: Gneu.org PHP SQL Connection Strings

WordPress-API einbinden

Falls man auf seine wordpress Installation von einer unabhängigen Seite (d.h. ein "leeres" PHP-Script) zugreifen möchte, kann man wie folgt die wordpress API einbinden:

API Einbinden

<?php
/<em> include wordpress API </em>/
define('WP_USE_THEMES', false);
require('./wp-blog-header.php');
?>

Nun stehen einem im Script alle [http://codex.wordpress.org/Function_Reference/|Funktionen von wordpress] zur Verfügung!

Hier zwei Beispiele, wie man damit die letzten drei posts abruft und wie man selbst einen neuen post erstellt:

Die letzten 3 Posts abrufen:

<?php
global $post;
$args = array( 'posts_per_page' => 3 );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :	setup_postdata($post); ?>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a><br />
<?php endforeach; ?>

Einen neuen Post erstellen (sehr nützlich bei Migrationen von einem anderen CMS)

/**
<ul>
 * A function used to programmatically create a post in WordPress. The slug, author ID, and title
 * are defined within the context of the function.
 *
 * @returns -1 if the post was never created, -2 if a post with the same title exists, or the ID
 *          of the post if successful.
 */
</ul>
function programmatically_create_post() {
 
	// Initialize the page ID to -1. This indicates no action has been taken.
	$post_id = -1;
 
	// Setup the author, slug, and title for the post
	$author_id = 1;
	$slug = 'example-post';
	$title = 'My Example Post';
 
	// If the page doesn't already exist, then create it
	if( null == get_page_by_title( $title ) ) {
 
		// Set the post ID so that we know the post was created successfully
		$post_id = wp_insert_post(
			array(
				'comment_status'	=>	'closed',
				'ping_status'		=>	'closed',
				'post_author'		=>	$author_id,
				'post_name'		=>	$slug,
				'post_title'		=>	$title,
				'post_status'		=>	'publish',
				'post_type'		=>	'post'
			)
		);
 
	// Otherwise, we'll stop
	} else {
 
    		// Arbitrarily use -2 to indicate that the page with the title already exists
    		$post_id = -2;
 
	} // end if
 
} // end programmatically_create_post
add_filter( 'after_setup_theme', 'programmatically_create_post' );
 
 
$post_id = programmatically_create_post()
if( -1 == $post_id || -2 == $post_id ) {
   // The post wasn't created or the page already exists
} // end if

Quellen