piccop.sh - Bashskript um Bilder zu bearbeiten

Autor : Christopher Pope
Beschreibung : Skript durchläuft einen Ordner und konvertiert die Bilddateien in einen anderen
Ordner mithilfe vom imagemagick die Bilder werden automatisch durchnummeriert

Wie benutzt man das Skript ?

Es gibt 2 Möglichkeiten dieses Skript zu verwenden

1.) starten durch ./piccop.sh sämtliche benötigte Informationen werden im Terminal abgefragt

2.) starten über Parameter
piccop.sh [Startverzeichnis] [Zielverzeichnis] [StartZähler oder a] [Auflösung] [löschen 0/1]
z.B.
piccop.sh /home/user/bilder/wallpaper/ /home/user/bilder/wallies 1 1024x768^ 1

wird als StartZähler a als Parameter übergeben wird die höchste Zahl im Zielverzeichnis ermittel +1 addiert
und als Start Zähler verwendet.

Bei Auflösung können auch die convert -resize Befehle verwendet werden mehr dazu unter : http://www.imagemagick.org/Usage/resize/#resize

Danke an :
Greebo , paddel , Barabbas , theinlein , Vain , user unknown von ubuntuusers.de für ihre Tipps und Hilfestellungen

Download : Download piccop.sh


#!/bin/bash
#
# Autor : Christopher Pope
# Beschreibung : Skript durchläuft einen Ordner und konvertiert die Bilddateien in einen anderen 
#		 Ordner mithilfe vom imagemagick die Bilder werden automatisch durchnummeriert
#
# Wie benutzt man das Skript ?
#
# Es gibt 2 Möglichkeiten dieses Skript zu verwenden 
# 
# 1.) starten durch ./piccop.sh sämtliche benötigte Informationen werden im Terminal abgefragt
#
# 2.) starten über Parameter
#     piccop.sh [Startverzeichnis] [Zielverzeichnis] [StartZähler oder a] [Auflösung] [löschen 0/1]
#     z.B.
#     piccop.sh /home/user/bilder/wallpaper/ /home/user/bilder/wallies 1 1024x768^ 1 
#
#     wird als StartZähler a als Parameter übergeben wird die höchste Zahl im Zielverzeichnis ermittel +1 addiert 
#     und als Start Zähler verwendet.
#
#     Bei Auflösung können auch die convert -resize Befehle verwendet werden mehr dazu unter : http://www.imagemagick.org/Usage/resize/#resize
#
# Danke an :
# Greebo , paddel , Barabbas , theinlein , Vain , user unknown von ubuntuusers.de für ihre Tipps und Hilfestellungen
#
blue=$(tput setaf 4)		# Blue
green=$(tput setaf 2)		# Green
red=$(tput setaf 1)	        # Red
bold=$(tput bold)      		# bold
white=$(tput sgr0)		# Text Reset auf Default
u=0
clear
echo
if [[ ${#} -lt 1 ]]
 then
	echo "Bitte Startverzeichnis angeben (muss mit / aufhören !)"
	read inp	
	source=$inp
else
	source=$1
fi
if [[ ${#} -lt 2 ]]
 then
	echo -e "Bitte Zielverzeichnis angeben (muss mit / aufhören !)"
	read inp1	
	target=$inp1
else
	target=$2
fi
if [[ ${#} -lt 3 ]]
 then
	echo -e "Bitte Start Zähler angeben"
	read inp2	
	startn=$inp2
else
	startn=$3
	if [[ "$startn" == "a" ]]; then
		hz=$(ls $target -a1 | tail -n 1 | grep -o [1-9][0-9]*)
		hz=$(($hz+1))
		#echo $hz
		startn=$hz
	fi
fi
if [[ ${#} -lt 4 ]]
	then
	echo
	echo -e "Wie groß sollen denn die Bilder nach dem konvertieren sein ?\n"
	echo -e "1024x768 (default)\t\t1"
	echo -e "1280x1024\t\t\t2"
	echo -e "1600x1200\t\t\t3"
	read -n 1 taste
	case $taste in
		1) res=1024x768^;;
		2) res=1280x1024^;;
		3) res=1600x1200^;;
	esac
else
	res=$4
fi
if [[ ${#} -lt 5 ]]
	then
	echo
	echo -e "Soll die Datei nach dem konvertieren gelöscht werden ?"
	echo -e "Ja\t\tj"
	echo -e "Nein\t\tn"
	read -n 1 taste
	case $taste in
		j|J) delete=1;;
		n|N) delete=0;;
	esac
else
	delete=$5
fi
# Zähler setzen
j=$startn
        echo	
	echo ${white}"Vorgang wird gestartet"
	echo "------------------------------------------------------------------------------------------------------------------------------"
	echo "   ${white}Quelle                    : ${bold}${red}$source"
	echo "   ${white}Ziel                      : ${bold}${green}$target"
	echo "   ${white}Start Zähler              : ${bold}${blue}$startn"
	echo "   ${white}Ziel Auflösung            : ${bold}${blue}$res ${white}"
	echo "   ${white}Löschen nach konvertieren : ${bold}${red}$delete ${white}"
	echo "------------------------------------------------------------------------------------------------------------------------------"
	echo
if (test -d $source); then
	if (test -d $target); then
		for file in $(find $source -type f | sort); do
	
			echo ${white}${bold}${blue}$file ${white} \-\-\-\> ${bold}${green}$target$(printf "%04u\n" "$j").jpg
			convert $file -resize $res $target$(printf "%04u\n" "$j").jpg
			if [[ $delete = 1 ]]
				then
				echo "${red}$file ${white} wird gelöscht"
				rm $file
			fi
			j=$(($j+1))
			u=$(($u+1))
		done
		echo
		echo "${white}------------------------------------------------------------------------------------------------------------------------------"
		j=$(($j-1))
		echo "${white} Vorgang wurde abgeschlossen , es wurden ${bold}${green}$u ${white}Dateien konvertiert"
		echo
	else
		echo
		echo "${white}------------------------------------------------------------------------------------------------------------------------------"
		echo "${white}Ziel : ${bold}${red}$target ${white} wurde nicht gefunden"
	fi
else
echo
echo "${white}------------------------------------------------------------------------------------------------------------------------------"
echo "${white}Quelle : ${bold}${red}$source ${white} wurde nicht gefunden"
fi
echo
exit 1

NetInformations.hta

Problem :

Man sucht verschiedenste Informationen über einen Benutzer / Gruppe oder einen Computer zu ermitteln.
Es stehen einige Bordmittel für Windows zur Verfügung, wer sich mit der Kommandozeile auskennt weiß das,
für alle anderen gibt diese GUI die die Abfragen etwas erleichtert.

Lösung :

Eine kleine GUI für die MS Tools :

- ping
- nbtstat
- qwinsta
- net group
- net user

Download : NetInformations.hta

Bilder :


Letztes Update am 26.03.2010
Kategorien: HTA
Tags für diesen Artikel:

Inputbox an bestimmter Position anzeigen

Problem
Man möchte eine Inputbox an eine bestimmte Position am Bildschirm anzeigen lassen um z.B. eine andere Anwendung nicht zu verdecken.

Lösung

InputBox ( "title", "Prompt" [, "Default" [, "password char" [, Width, Height [, Left, Top [, TimeOut]]]]] )

Parameter

title = Der Titel der InputBox
prompt = Ein Beschreibungstext für den Nutzer, damit er weiß, was er eingeben soll.
password char [optional] = Das Zeichen, mit dem alle eingegebenen Zeichen maskiert werden. Wenn du willst, dass das echte Zeichen angezeigt werden soll, dann übergebe einen leeren String ("") (Standardwert) oder ein Leerzeichen als erstes Zeichen. Wenn du einen mehrere Zeichen langen String angibst, wird nur das erste Zeichen zum Maskieren genutzt. Die weiteren Zeichen haben eine besondere Bedutung. Siehe dazu die Bemerkungen.
width [optional] = Die Breite des Fensters. Wenn die Breite definiert wird, muss auch die Höhe angegeben werden. Gib -1 an, um die Standardbreite zu verwenden.
height [optional] =Die Höhe des Fensters. Wenn die Höhe definiert wird, muss auch die Breite angegeben werden. Gib -1 an, um die Standardhöhe zu verwenden
left [optional] = Horizontale Position der InputBox. Standardmäßig wird die Box zentriert. Wenn angegeben, muss auch die vertikale Position bestimmt werden.
top [optional] = Vertikale Position der InputBox. Standardmäßig wird die Box zentriert. Wenn angegeben, muss auch die horizontale Position bestimmt werden.
timeout [optional] = Wie viele Sekunden soll gewartet werden, bis die InputBox automatisch über den Cancel-Button verlassen wird.

Quelle autoit.de: InputBox - Referenz

Fehlerbehandlung in VBS/WSH

Problem :

Es soll überprüft werden ob eine Aufgabe eines VBS/WSH Skriptes erfolgreich durchgeführt wurde.
Normalerweise stopt die Ausführen an jedem Fehler , ohne das dieser auswertbar bist.
In einigen Fälle wird aber ein Rückgabewert erforderlich diesen erreicht man indem man am Anfang
des Skriptes die Zeile

On Error Resume Next


einfügt. Der Status des Vorgangs kann dann mit

if err.number<>0 then
wscript.echo err.number, err.description
err.Clear
end if


überprüft werden. Wenn die Fehlerbehandlung wieder von VBS/WSH erledigt werden soll kann man das mit der Zeile

On Error Goto 0


erreichen

Sprache des Installierten Betriebssystem ermitteln

Problem :

Man muss herausfinden auf welcher Sprache das Betriebssystem läuft

Lösung :

Diese Funktion ermittelt die gewünschte Information über WMI

Benötigte Deklarationen :

Dim ObjWMI : Set ObjWMI = GetObject("winmgmts:\\.\root\CIMV2")
PUBLIC LANGID
PUBLIC LANGLE


Funktion :

Function GetLanguageID()
DIM colItems : Set colItems = ObjWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each objItem in colitems
LANGID = objItem.Locale
Next
Select Case LANGID
Case "0409" : LANGLE = "EN" : MsgBox "Language : English (American)"'
Case "0407" : LANGLE = "DE" : MsgBox "Language : Deutsch (Germany)"
Case "040c" : LANGLE = "FR" : MsgBox "Language : French (Standard)"
Case "0c0a" : LANGLE = "ES" : MsgBox "Language : Spain (Modern Sort)"
Case "040a" : LANGLE = "ES" : MsgBox "Language : Spain (Traditional Sort)"
Case "0410" : LANGLE = "IT" : MsgBox "Language : Italian (Standard)"
End Select
End Function


Kann beliebig mit den Codes von MS erweitert werden : Language IDs Microsoft

BIOS mittels WMI per Skript auslesen

Problem
Man möchte gerne BIOS-Version, Hersteller, Seriennummer und Physikalische Speicherbelegung aus dem BIOS auslesen ohne den Server neu zu starten.

Lösung
Folgendes VBS-Skript ließt die wichtigsten Informationen aus dem BIOS aus:


strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colBIOS = objWMIService.ExecQuery ("Select * from Win32_BIOS")
For each objBIOS in colBIOS
msg = "BIOS-Informationen" & vbcrlf
msg = msg & "Manufacturer: " & objBIOS.Manufacturer & vbcrlf
msg = msg & "Name: " & objBIOS.Name & vbCRLF
msg = msg & "Serial Number: " & objBIOS.SerialNumber & vbCRLF
msg = msg & "SMBIOS Version: " & objBIOS.SMBIOSBIOSVersion & vbCRLF
msg = msg & "Status: " & objBIOS.Status & vbCRLF & vbcrlf
Next

msg = msg & "physikalische Speicherplätze" & vbCRLF
anzahl = 0

Set colItems = objWMIService.ExecQuery("Select * from Win32_PhysicalMemory",,48)
For Each objItem in colItems
    anzahl = anzahl + 1
    msg = msg & "Bank " & anzahl & " = Größe: " & objItem.Capacity/1024/1024 & " MB" & vbcrlf
Next
msgbox msg
“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)