Host pingen mit VBScript via WMI

Heute musste ich in einem VBScript einen Host pingen können. Zuerst habe ich lange versucht, mit cmd den Host zu pingen und um dann den zurückgegebenen Text zu filtern. Es gibt viel einfacher, schneller, bequemer und es geht kein cmd Fenster auf. Die Lösung ist WMI. So sieht die Funktion aus:

Function Reachable(host)
	Dim wmiQuery, objWMIService, objPing, objStatus
	wmiQuery = "Select * From Win32_PingStatus Where Address = '" & host & "'"
	Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
	Set objPing = objWMIService.ExecQuery(wmiQuery)
	For Each objStatus in objPing
		If IsNull(objStatus.StatusCode) Or objStatus.Statuscode<>0 Then
			Reachable = False 'if computer is unreacable, return false
		Else
			Reachable = True 'if computer is reachable, return true
		End If
	Next
End Function

Gefunden habe ich den Codesnippet hier: visualbasicscript.com

Debian unrar splitted files

Heute hatte ich viele verschiedene, gesplittete RAR Files in einem Ordner, welche ich alle automatisch entpacken wollte. Klar hätte ich alles mit Winrar entpacken können, weil die Files auf einem Sambashare liegen. Jedoch hätte dies unnötig das Netzwerkbelastet und wo bleibt denn da der Spass an der Kommandozeile?

Unrar 0.0.1

Als erstes habe ich mir unrar-free von den Debianpacketquellen installiert. unrar-free liegt in den Debianpacketquellen jedoch erst in Version 0.0.1 vor und dieser Bugreport zeigt, dass das entpacken von splitted RAR Files mit unrar-free Version 0.0.1 nicht funktioniert!

Unrar 3.93

Kurzerhand habe ich mir von rarlab die aktuellste Version 3.93 von RAR heruntergeladen.

rarlinux-3.9.3.tar.gz entpacken und nach /usr/local/bin verschieben

tar -xf rarlinux-3.9.3.tar.gz
mv rar /usr/local/bin/

Splitted RAR Files können so entpackt werden

/usr/local/bin/rar/unrar x rarfile.part1.rar

Mehrere Splitted RAR Files können so entpackt werden

for f in *.part1.rar; do /usr/local/bin/rar/unrar x "$f"; done

Warum sollte man in diesem Fall immer den kompletten Pfad zu unrar angeben?
Ganz einfach, ist eine ältere Version von unrar installiert, wird unter Umständen automatisch diese ausgeführt.

user@server:~$ unrar --version
unrar 0.0.1
user@server:~$ /usr/local/bin/rar/unrar --version
UNRAR 3.93 freeware      Copyright (c) 1993-2010 Alexander Roshal

Diese Befehle sollten ebenfalls für Ubuntu funktionieren.
Viel Spass beim automatischen entpacken ;-).

Netzlaufwerk mit VBS / Batch verbinden

Dies ist nur ein kleiner Codeschnipsel, wie ein Netzwerlaufwerk verbunden werden kann.

Dim objNetwork
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive "Z:", "\\server\path", false, "user", "password"

und hier der Befehl für eine Batch

net use Z: \\server\path /user:user password

Viele Dateien in einem Ordner mit einem Script umbenennen

Heute hatte ich folgendes Problem: In einem Ordner waren ca. 40 Dateien, welche alle eine URL in ihrem Dateinamen enthielten. Natürlich wollte ich diese unnütze URL entfernen und habe kurzerhand ein Miniscript geschrieben:

#!/bin/sh
###########
# Renames files in a directory
###########

# Get all filenames
files=$(ls *.mp3)
for i in $files
do

# Build the new filename
new=$(echo $i | sed s/'.\[www.url.com\]'/""/g)

# Move old file to new file
mv $i $new
done

Das Miniscript entfernt schnell in allen Dateinamen die URL und kann als Basis für weitere Bearbeitungen von vielen Dateinamen benutzt werden. Mit Sed und Regex kann man seiner Kreativität freien Lauf lassen ;-).

Update: Danke an Lars Moelleken. Du hast mein Script in einem Einzeiler erledigt :D.

rename s/.\[www.url.com\]/""/ *.mp3

LEFT JOIN mit MySQL

Ich wollte in einer MySQL Datenbank zwei Tabellen erstellen, welche voneinander abhängig sind. Danach wollte ich mir die Daten der beiden Tabellen ausgeben lassen. Weil ich meine ersten Datenbankerfahrungen mit Microsoft Access 2007 gemacht habe und ich dort alles mit Klicki Klicki anstatt mit SQL gelöst habe, stand ich jetzt bei der MySQL Datenbank und der Relation ein bisschen an. In Microsoft Access 2007 habe ich das ganz einfach mit Primarykey und Foreignkey gelöst. Da habe ich die Relationen einfach zusammengeklickt und schon hats funktioniert. Bei MySQL ist das ein bisschen anders, aber einfacher und besser nachvollziehbar wenn man es versteht. Weiterlesen

String teilen und Teile in MySQL DB eintragen

Ein kleiner Codeschnipsel, wie man mit PHP einen String teilen und die Teile in eine MySQL Datenbank eintragen kann:


$array_mit_einzelnen_teilen = explode(";", $string); // ";" ist der Delimiter
$max = sizeof($array_mit_einzelnen_teilen); // Anzahl der Teile berechnen
for($count = 0; $count < $max; $count++)
{
	$wert = $array_mit_einzelnen_teilen[$count];
	$sql = "INSERT INTO tabellenname (wert) VALUES ('$wert')";
	mysql_query($sql);
}