Feed the Open Source, Luke!
vmkfstools – usefull hints
You can use the ‘vmkfstools’ in an ESXi SSH-Shell to copy virtual disks, or expand them, or whatever
Expand a virtual disk:
vmkfstools -X 30G ./DISK.vmdk
Be sure not to use the *-flat.vmdk file!
After expansion use GParted to expand the partition inside the virtual disk.
Clone a virtual disk:
vmkfstools -i ./OLD.vmdk ./NEW.vmdk
# vmkfstools - OPTIONS FOR FILE SYSTEMS:
vmkfstools -C --createfs vmfs3
-b --blocksize #[mMkK]
-S --setfsname fsName
-Z --spanfs span-partition
-G --growfs grown-partition
deviceName
-P --queryfs -h --humanreadable
-T --upgradevmfs
vmfsPath
OPTIONS FOR VIRTUAL DISKS:
vmkfstools -c --createvirtualdisk #[gGmMkK]
-d --diskformat [zeroedthick|
thin|
eagerzeroedthick]
-a --adaptertype [buslogic|lsilogic|ide]
-w --writezeros
-j --inflatedisk
-k --eagerzero
-K --punchzero
-U --deletevirtualdisk
-E --renamevirtualdisk srcDisk
-i --clonevirtualdisk srcDisk
-d --diskformat [zeroedthick|
thin|
eagerzeroedthick|
rdm:<device>|rdmp:<device>|
2gbsparse]
-X --extendvirtualdisk #[gGmMkK]
[-d --diskformat eagerzeroedthick]
-r --createrdm /vmfs/devices/disks/...
-q --queryrdm
-z --createrdmpassthru /vmfs/devices/disks/...
-v --verbose #
-g --geometry
-x --fix [check|repair]
vmfsPath
OPTIONS FOR DEVICES:
-L --lock [reserve|release|lunreset|targetreset|busreset|readkeys|readresv] /vmfs/devices/disks/...
-B --breaklock /vmfs/devices/disks/...
Synology DiskStation autoindex Multimedia files by mediaserver
NAS> cat /etc/rc.local mount --bind /volume1/Multimedia/MP3 /volume1/music mount --bind /volume1/Multimedia/video /volume1/video mount --bind /volume1/Multimedia/Bilder /volume1/photo
chmod 755 /etc/rc.local Thanks to Wim http://dev.eek.be/2010/01/change-folders-for-synology-media-server/ to do: echo repair > /sys/block/md2/md/sync_action see --> http://forum.synology.com/enu/viewtopic.php?f=39&t=32727&p=129722&hilit=echo+repair+%3E+%2Fsys%2Fblock%2Fmd2%2Fmd%2Fsync_action#p129722
Synoindex Synology DS410
use this with SSH to add files to your Mediaserverindex.
NAS> synoindex
Copyright (c) 2003-2011 Synology Inc. All rights reserved.
usage:
Add: synoindex -a filename
Delete: synoindex -d filename
Add folder: synoindex -A folder
Delete folder: synoindex -D folder
Rename/move file/folder: synoindex -N newfullpath oldfullpath
Update Photo Images: synoindex -U photo
Execute file index: synoindex -f {index option}
Get from DB: synoindex -g filename -t [video|music|photo|playlist]
There is also an additional option witch is as follows.
synoindex -R [video|music|photo|playlist]
This will re-index everything in to that current region.
Schon mal “Desktop anzeigen” verlegt?
C:\Dokumente und Einstellungen\UserName\Anwendungsdaten\Microsoft\Internet Explorer\Quick Launch
Datei erzeugen namens “Desktop anzeigen.scf”
Inhalt:
[Shell] Command=2 IconFile=explorer.exe,3 [Taskbar] Command=ToggleDesktop
…und wieda da
Catch all network traffic except ssh with tcpdump
tcpdump -p -s0 -w tcpdump_file.cap port not 22
copy backup ntds.dit Active Directory
If you want to copy / backup Active Directory Information do the following:
(tested on Server 2008)
-
Stop Active Directory Domain Services
-
cmd.exe
-
ntdsutil –> Activate Instance NTDS –> files –> compact to c:\horst (temp Folder)
now U have a copy of your AD Information in C:\horst\ntds.dit
Now, say you backup your AD Data every night, in folders that represent every day of a month. (I know that stopping AD Services every day in your productive environment is a decision you have to make
)
You can take that copy of ntds.dit, seperate your server from your productive network (stop AD Services, replace file, delete log files in c:\windows\NTDS\*.log), and you have a look in your AD at that time.
Before you start the AD Services again you have to insert the following reg key to the registry
HKLM/System/CurrentControlSet/Services/NTDS/Parameters: “Disable DSA Database Epoch Check”:REG_DWORD=0×00000001
or change “HKLM/System/CurrentControlSet/Services/NTDS/Parameters/DSA Database Epoch” – minus times you started the AD Services since then
i prefer ”Disable DSA Database Epoch Check”
have phun ![]()
Squid Proxy Cache mit Einbindung Windows AD
Der folgende Text wurde Quick&Dirty aus Word eingefügt, daher gibt es noch ein “hübscheres” PDF
ngud.de – Squid Proxy Cache mit Einbindung Windows AD_anon
Verwendete Software
Debian Lenny 5.0.6
Linux 2.6.26-2-686 #1 SMP Mon Aug 30 07:01:57 UTC 2010 i686 GNU/Linux
Squid 2.7.STABLE3
Samba 3.2.5-41
Kerberos krb5-config 1.22 / krb5-user 1.6.dfsg.4
Winbind 3.2.5-41
Für das Verständniss dieses Dokuments wird der Umgang mit Netzwerken, Linux Debian, Windows Domänen und VMware ESXI Servern vorausgesetzt. Hilfreich sind Kenntnisse in Kerberos, Samba und Squid.
Inhaltsverzeichnis
1 Installation Server
1.1 Installation VM
1.2 Installation benötigte Programme
1.3 Konfiguration der Programme
1.3.1 Allgemeine Hinweise
1.3.2 etc/samba/smb.conf
1.3.3 etc/krb5.conf – Kerberos Konfiguration
1.3.4 Konfiguration Winbind
1.3.5 etc/nsswitch.conf
1.4 Testen der Konfiguration
1.5 Konfiguration Squid
1.6 Last Words
2 Anhang
2.1 http://wiki.samba.org/index.php/Samba_&_Active_Directory
Als Basis wird ein aktuelles Debian Netinst. verwendet. Zu beziehen ist dies unter http://www.debian.org/CD/netinst/
Es wird eine VM unter ESXi installiert. Ich empfehle Squid erst ohne Authentifizierung, zur besseren Fehlersuche, zu testen
Eine funktionierende DNS Umgebung ist für die Kommunikation mit dem AD zwingende Vorraussetzung.
Im Folgenden nur die „wichtigen“ Screenshots.
Für Testzwecke ist ein „Speicherplatz nach Bedarf zuteilen“ in Ordnung. Für die produktive Maschine sollte man die Festplatte komplett zuweisen.
Anschließend in den Eigenschaften der VM noch die passenden Einstellungen vornehmen (Arbeitsspeicher, CPUs, CD/DVD Laufwerk (vorweg geladenes Debian Netinst. ISO einbinden)).
Nun kann die virtuelle Maschine gestartet werden.
Als Vorschlag zur Installation nur das Standard System auswählen (SPACE wählt an und ab)
Als root anmelden und ssh installieren, die weiteren Schritte sind dann mit Putty einfacher.
apt-get install ssh
squid2:~# apt-get update
Hit http://ftp.de.debian.org lenny Release.gpg
Ign http://ftp.de.debian.org lenny/main Translation-en_US
Hit http://ftp.de.debian.org lenny Release
Hit http://security.debian.org lenny/updates Release.gpg
Ign http://security.debian.org lenny/updates/main Translation-en_US
Ign http://ftp.de.debian.org lenny/main Packages/DiffIndex
Hit http://security.debian.org lenny/updates Release
Ign http://ftp.de.debian.org lenny/main Sources/DiffIndex
Ign http://security.debian.org lenny/updates/main Packages/DiffIndex
Hit http://ftp.de.debian.org lenny/main Packages
Ign http://security.debian.org lenny/updates/main Sources/DiffIndex
Hit http://volatile.debian.org lenny/volatile Release.gpg
Hit http://ftp.de.debian.org lenny/main Sources
Hit http://security.debian.org lenny/updates/main Packages
Hit http://security.debian.org lenny/updates/main Sources
Ign http://volatile.debian.org lenny/volatile/main Translation-en_US
Hit http://volatile.debian.org lenny/volatile Release
Ign http://volatile.debian.org lenny/volatile/main Packages/DiffIndex
Ign http://volatile.debian.org lenny/volatile/main Sources/DiffIndex
Hit http://volatile.debian.org lenny/volatile/main Packages
Hit http://volatile.debian.org lenny/volatile/main Sources
Reading package lists… Done
squid2:~# apt-get upgrade
Reading package lists… Done
Building dependency tree
Reading state information… Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
# apt-get install htop ntp squid samba winbind krb5-config krb5-user
Im weiteren Verlauf folgen ein paar Fragen zu den installierenden Packeten, hier kann entweder der Default Wert eingetragen werden oder sinnvolle Werte. Die entsprechenden Eintragungen in den Configdateien von Samba, Winbind und Kerberos werden im weiteren Verlauf angepasst.
OK, die benötigten Programme sind installiert.
Htop – ist ein persönlicher Favorit von mir
Ntp – wird benötigt damit die Uhrzeit synchronisiert ist, damit im weiteren Verlauf die Kommunikation mit der Windows AD Domäne funktioniert.
Squid – ja, wir wollten ja einen Proxy installieren
samba winbind krb5-config krb5-user – werden für die Anbindung an die AD benötigt.
Zuallererst müssen die Daemons gestoppt werden.
squid2:~# /etc/init.d/samba stop
Stopping Samba daemons: nmbd smbd.
squid2:~# /etc/init.d/winbind stop
Stopping the Winbind daemon: winbind.
Die Konfiguration der Dienste ist diffizil und fehleranfällig. Deswegen im weiteren Verlauf Beispiele der Configdateien für ein Copy und Paste. Diese Dokumentation ist auf einer neuen Serverversion erfolgreich getestet worden. Ich hoffe die Namen für workgroup, realm, etc. sind sprechend.
1.3.2 /etc/samba/smb.conf
squid:~# cat /etc/samba/smb.conf
[global]
workgroup = DOMAENEKURZNAME
realm = DOMAENE.FQDN.TLD
preferred master = no
security = ADS
encrypt passwords = true
winbind separator = +
idmap uid = 600-20000
idmap gid = 600-20000
client ntlmv2 auth = yes
[homes]
valid users = %S
Kurze Erklärung:
Wichtig ist die GROßSCHREIBUNG der workgroup und des realms, sonst funktioniert später die Einbindung in die AD nicht.
Preferred master ist optional, würde ich aber auf jeden Fall setzten – wenn der Linux host der Master ist wird wahrscheinlich das anmelden in der Domäne schwierig
Der winbind seperator spielt nachher in der Kerberos und Squid Konfiguration eine wichtige Rolle, der gewohnte Backslash „\“ ist kaum brauchbar, da man immer daran denken müsste ihn durch einen vorangestellen „\“, also „\\“ in den Configs brauchbar zu machen. Von daher ist ein Pluszeichen i.O.
Die Parameter idmap_uid und idmap_gid haben mit den Informationen zu tun die der Linux Server aus der AD zieht, ist z.B der erste Wert (600) zu hoch gesetzt können keine Gruppen oder Benutzerinformationen übertragen werden. Diese Werte stammen aus dem Samba Wiki (http://wiki.samba.org/index.php/Samba_&_Active_Directory ) und funktonieren. Die komplette Anleitung findet sich im Anhang (2.1).
Client ntlmv2 auth legt die Kommunikation mit dem AD auf das sichere NTLMv2 fest.
squid:~# cat /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = DOMAENE.FQDN.TLD
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes
# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
# The following encryption type specification will be used by MIT Kerberos
# if uncommented. In general, the defaults in the MIT Kerberos code are
# correct and overriding these specifications only serves to disable new
# encryption types as they are added, creating interoperability problems.
#
# Thie only time when you might need to uncomment these lines and change
# the enctypes is if you have local software that will break on ticket
# caches containing ticket encryption types it doesn’t know about (such as
# old versions of Sun Java).
# default_tgs_enctypes = des3-hmac-sha1
# default_tkt_enctypes = des3-hmac-sha1
# permitted_enctypes = des3-hmac-sha1
# The following libdefaults parameters are only for Heimdal Kerberos.
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
[realms]
DOMAENE.FQDN.TLD = {
kdc = dc.domaene.tld
admin_server = dc.domaene.tld
}
[domain_realm]
.mit.edu = ATHENA.MIT.EDU
mit.edu = ATHENA.MIT.EDU
.media.mit.edu = MEDIA-LAB.MIT.EDU
media.mit.edu = MEDIA-LAB.MIT.EDU
.csail.mit.edu = CSAIL.MIT.EDU
csail.mit.edu = CSAIL.MIT.EDU
.whoi.edu = ATHENA.MIT.EDU
whoi.edu = ATHENA.MIT.EDU
.stanford.edu = stanford.edu
.slac.stanford.edu = SLAC.STANFORD.EDU
[login]
krb4_convert = true
krb4_get_tickets = false
Ich habe zu der Standardconfig die Domäne hinzugefügt, und teilweise die Einträge belassen, zur besseren Übersicht hier nochmals die wichtigen Einstellungen separiert.
[realms]
DOMAENE.FQDN.TLD = {
kdc = dc.domaene.tld
admin_server = dc.domaene.tld
}
[libdefaults]
default_realm = DOMAENE.FQDN.TLD
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes
Auch das Logging habe ich hinzugefügt.
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
Falls Fragen auftauchen empfehle ich nach /etc/krb5.conf und den entsprechenden Schlagwörtern (kdc, admin_server) zu googlen, eine ausreichende Erklärung ist in diesem Dokument nicht möglich. Das Thema ist zu umfangreich.
Die Einstellungen hierzu sind wieder aus dem Samba Wiki
Squid und seine Helfer laufen als User Proxy auf dem Linuxserver, daher muss mit
gpasswd -a proxy winbindd_priv auf der Kommandozeile (Putty) der User proxy der Gruppe winbindd_priv hinzugefügt werden.
1.3.5 /etc/nsswitch.conf
In der /etc/nsswitch.conf muss winbind zu passwd, group und shadow hinzugefügt werden, hier die Ansicht der bearbeiteten Datei.
squid:~# cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference’ and `info’ packages installed, try:
# `info libc “Name Service Switch”‘ for information about this file.
passwd: compat winbind
group: compat winbind
shadow: compat winbind
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Die Dienste bitte in der folgenden Reihenfolge starten
/etc/init.d/samba start
/etc/init.d/winbind start
Jetzt kann der Linuxserver als Mitgliedsserver in die Windows AD gefahren werden.
net ads join -U Adminaccount
Hierbei wird das Passwort abgefragt.[1]
Hat das funktioniert liefert das folgende Kommando einen Erfolg.
squid:~# net ads testjoin
Join is OK
Gleichzeit sollte der Server in der AD auftauchen.
Folgend ein paar Kommandos, mit denen sich eine erfolgreiche Verbindung testen lässt.
squid:~# kinit testuser@DOMAENE.FQDN.TLD
Password for testuser@DOMAENE.FQDN.TLD:
squid:~# kinit -V
Password for testuser@DOMAENE.FQDN.TLD:
Authenticated to Kerberos v5
…zeigt eine erfolgreiche Erstellung eines Kerberos Tickets, was will der Admin mehr
An dieser Stelle ist ein Neustart des Servers erforderlich, fragt mich nicht warum
ich weiss es nicht. Ich habe nur reproduzierbar festgestellt das wbinfo erst Info’s liefert, nach dem der Server neu gestartet wurde.
wbinfo –u liefert die User der Domäne
squid:~# wbinfo -u
DOMAENE+testuser
DOMAENE+gast
DOMAENE+support_388945a0
DOMAENE+testuser2
DOMAENE+administrator
wbinfo –t liefert das Ergebniss zum Trust
squid:~# wbinfo -t
checking the trust secret via RPC calls succeeded
wbinfo –g liefert die Gruppen
squid:~# wbinfo -g
DOMAENE+sqlserver2005sqlbrowseruser$…
DOMAENE+sqlserver2005mssqlserveradhelperuser$…
DOMAENE+sqlserver2005mssqluser$erpdc02$…
DOMAENE+sqlserver2005msfteuser$erpdc02$…
DOMAENE+domänencomputer
DOMAENE+domänencontroller
DOMAENE+zertifikatherausgeber
DOMAENE+domänen-admins
DOMAENE+domänen-benutzer
…
DOMAENE+inet
DOMAENE+domänen-gäste
DOMAENE+ras- und ias-server
DOMAENE+wins-benutzer
DOMAENE+dnsadmins
Wbinfo –a macht eine Probeanmeldung
squid:~# wbinfo -a ERP+testuser%Passwort
plaintext password authentication failed
Could not authenticate user testuser with plaintext password
challenge/response password authentication succeeded
Bei dieser Ausgabe ist zu sehen das Plaintext nicht funktioniert (Domäneneinstellung), eine Anmeldung aber doch (challenge/response password authentication succeeded (in diesem Fall über das sichere NTLMv2))
Okay, damit ist die Testphase abgeschlossen, der Server ist Mitglied der Domäne und kann erfolgreich Nutzer authentifizieren. Jetzt kann Squid eingerichtet werden.
Die Squid Konfiguration ist in der Datei /etc/squid/squid.conf gesammelt. Diese Datei ist sehr umfangreich und nicht einfach zu konfigurieren. Anbei meine geänderten Zeilen die eine erfolgreiche Authentifizierung mit der Domäne bewirken. (Bei Zeilenumbrüchen bitte die Zeile als Ganzes betrachten). Ich gehe die squid.conf von oben nach unten durch.
Zur besseren Übersichtlichkeit kann man nach denm # fettgedruckten Text suchen, dann ist man schneller im entsprechenden Block
Hinweise zur Formatierung:
Ist die Zeile in der Configdatei
Sind meine Anmerkungen (darunter)
Änderungen /etc/squid/squid.conf
# WELCOME TO SQUID 2.7.STABLE3 —————————-
# OPTIONS FOR AUTHENTICATION
auth_param ntlm program /usr/bin/ntlm_auth –helper-protocol=squid-2.5-ntlmssp –require-membership-of=”DOMAENE+inet”
–require-membership-of=”DOMAENE+inet” steht für die Gruppe in der Domäne, in diesem Fall also die Gruppe INET. Benutzer die Mitglieder dieser Gruppe sind wird der Zugang über den Proxy gewährt
#auth_param ntlm program /usr/bin/ntlm_auth –helper-protocol=squid-2.5-ntlmssp
Dieser Parameter ist auskommentiert, bedeutet aber das jedem authentifizierten Nutzer das Surfen erlaubt wird.
auth_param ntlm children 15
Anzahl der Threads, die Squid öffnen darf um Anfragen an das AD zu stellen. Bei Bedarf sollten diese erhöht werden. Erfahrungen dazu habe ich noch nicht.
auth_param ntlm keep_alive on
# TAG: acl
# Defining an Access List
…
acl AuthorizedUsers proxy_auth REQUIRED
Damit wird die ACL Auth.Users kreiert, über proxy_auth wird auf auth_param ntlm verwiesen. Es heisst also nichts anderes als definiere eine Gruppe Auth.User, die sich zuvor über proxy_auth authentifiziert haben.
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
Bei den Ports habe ich nichts verändert, die Liste scheint vollsändig. Bei Bedarf an weiteren Ports, diese hier anfügen.
# TAG: http_access
http_access allow all AuthorizedUsers
Über diese http_access Regel wird den Auth.Usern der Zugriff gewährt (weiter oben wurde Auth.Users definiert). Benutzer müssen in der Gruppe DOMAENE\inet sein.
# http_access allow localnet
http_access allow localhost
Localhost darf auch
# And finally deny all other access to this proxy
http_access deny all
der verbleibende Rest darf nicht mehr
# TAG: http_port
# Usage: port [options]
# hostname:port [options]
# 1.2.3.4:port [options]
# Squid normally listens to port 3128
http_port 3128
Port bei Bedarf verändern, z.B. 8888
# MEMORY CACHE OPTIONS
# —————————————————————————–
# TAG: cache_mem (bytes)
#Default:
cache_mem 16 MB
# maximum_object_size_in_memory 8 KB
# memory_replacement_policy lru
# DISK CACHE OPTIONS
# —————————————————————————–
# TAG: cache_replacement_policy
#Default:
# cache_replacement_policy lru
#Default:
# cache_dir ufs /var/spool/squid 100 16 256
#Default:
# minimum_object_size 0 KB
#Default:
# maximum_object_size 20480 KB
#Default:
# cache_swap_low 90
# cache_swap_high 95
# LOGFILE OPTIONS
# —————————————————————————–
# TAG: logformat
# The default formats available (which do not need re-defining) are:
#
#logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
#logformat squidmime %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt [%>h] [%<h]
#logformat common %>a %ui %un [%tl] “%rm %ru HTTP/%rv” %Hs %<st %Ss:%Sh
#logformat combined %>a %ui %un [%tl] “%rm %ru HTTP/%rv” %Hs %<st “%{Referer}>h” “%{User-Agent}>h” %Ss:%Sh
access_log /var/log/squid/access.log squid
#Default:
cache_log /var/log/squid/cache.log
#Default:
cache_store_log /var/log/squid/store.log
Das access_log kann bei Bedarf verändert werden, in dieser Einstellung sieht eine Zeile so aus:
1284045145.911 910 123.123.123.136 TCP_MISS/200 55024 GET http://www.ngud.de/ DOMAENE+testuser2 DIRECT/87.230.78.108 text/html
Wenn nicht alle relavanten Informationen zu sehen sind kann das Log über „logformat squid“ angepasst werden.
# OPTIONS FOR FTP GATEWAYING
# —————————————————————————–
#Default:
ftp_user Squid@domain.tld
Ist das editieren der squid.conf beendet kann man mit /etc/init.d/squid restart (oder reload) die Konfiguration testen.
Ich persönlich ziehe noch einen kompletten Serverneustart vor, um sicherzugehen das alle Dienste in der richtigen Reihenfolge geladen weden.
Nun sollte ein User, der in der Gruppe „inet“ ist surfen können. Ein Nutzer, aus der gleichen Domäne, der nicht in der Gruppe ist, nicht.
Happy Testing
[1] Ich habe bei dieser Gelegenheit mit tcpdump die Packete mitgeschnitten und diese mit Whireshark untersucht. Mein Passwort konnte ich nicht entdecken, daher scheint die Verschlüsselung zu funktionieren
Powershell: read eventlogs from remote servers and send them as mail
with the help of the Microsoft Community
here is a script which reads the eventlogs from multiple Servers and finally sends the output with the help of the Send-MailMessage Cmdlet (Powershell v 2.0)
It has 2 forech () Sections because it should go server by server.
$meldungen = @()
$compName = $("server1", "server2")
$Logs =$("System", "Application", "Directory Service", "DNS Server", "File Replication Service")
Foreach ($server in $compName){
forEach ($log in $logs){
$meldungen += Get-EventLog $log -EntryType Error,Warning -ComputerName $server -after (get-date).AddHours(-24) | where{$_.EventID -ne "3000"} | select MachineName,TimeWritten,EntryType,Source,EventID,Message | ConvertTo-Html -As List -PreContent "<H3>Servername: $server Log: $log </h3>" -PostContent "<hr>" | Out-String
}
}$compName = $("server3", "server4", "server5", "server6", "server7")
$Logs =$("System", "Application")Foreach ($server in $compName){
forEach ($log in $logs){
$meldungen += Get-EventLog $log -EntryType Error,Warning -ComputerName $server -after (get-date).AddHours(-24) | where{$_.Source -ne "Print" -and $_.EventID -ne "1111"} | select MachineName,TimeWritten,EntryType,Source,EventID,Message | ConvertTo-Html -As List -PreContent "<H3>Servername: $server Log: $log </h3>" -PostContent "<hr>" | Out-String
}
}
$body = $meldungen | Out-String$from = "mail@somewhere.tld"
$Subject = "Eventlogs ERP Error, Warning, letzte 24 Stunden"
$To = user@2getmail.tld
Send-MailMessage -from $from -Subject $Subject -To $To -Body $body -SmtpServer "your_smtp_server" -BodyAsHtml -Priority Low
# with “$meldungen = @()” i create an array – and with “$meldungen += Get-EventLog…” i put all the entry’s one after another
# (get-date).AddHours(-24) means – get the eventlogs for the last 24 hours, script is run at 07:00 in the morning.
# where{$_.EventID -ne "3000"} means filter out Events with EventID 3000 (DNS Server has found multiple…..)
# the “ConvertTo-Html -As List -PreContent "<H3>Servername: $server Log: $log </h3>" -PostContent "<hr>" “ does a nice job, in the email it produces nice sections, Output looks like this (no entry’s means nothing to worry about
)
Von: Ereignislogs 123[mailto:some@email]
Gesendet: Mittwoch, 25. August 2010 11:51
An: Roman
Betreff: Eventlogs ERP Error, Warning, letzte 24 Stunden
Wichtigkeit: Niedrig
Servername: Server1 Log: System
Servername: Server1 Log: Application
|
MachineName: |
Server1 |
|
TimeWritten: |
25.08.2010 03:36:12 |
|
EntryType: |
Warning |
|
Source: |
Userenv |
|
EventID: |
1517 |
|
Message: |
Die Registrierung des Benutzers "xxx" wurde gespeichert, obwohl eine Anwendung oder ein Dienst auf die Registrierung während der Abmeldung zugegriffen hat. Der von der Registrierung des Benutzers verwendete Speicher wurde nicht freigegeben. Der Upload der Registrierung wird durchgeführt, wenn diese nicht mehr verwendet wird. Dies wird oft durch Dienste verursacht, die unter einem Benutzerkonto ausgeführt werden. Versuchen Sie diese so zu Konfigurieren, dass sie unter den Konten "Lokaler Dienst" oder "Netzwerkdienst" ausgeführt werden. |
Servername: Server1 Log: Directory Service
Servername: Server1 Log: DNS Server
Servername: Server1 Log: File Replication Service
Servername: Server2 Log: System
Servername: Server2 Log: Application
|
MachineName: |
Server2 |
|
TimeWritten: |
25.08.2010 10:40:10 |
|
EntryType: |
Warning |
|
Source: |
Userenv |
|
EventID: |
1517 |
|
Message: |
Die Registrierung des Benutzers "Horst |
|
|
Copy directories depending on LastWriteTime with Powershell
This is my first PowerShell Script, Comments welcome.
Thanks to Google and all the Scripting Gods out there
The intention of this Powershell Script is not to know what it has to copy, the only filter is in “$dirs = Get-ChildItem $Quelle -filter erp* | % {$_.fullname}“. I filter for erp as the first three characters of the filename. The first Get-Childitem gets the directories, the second Get-Childitem gets the subdirectories and copies just the dirs (-recurse) which are not older than six days ( $Zeitvergleich = (Get-date).AddDays(-6) ).
$Quelle = "D:\somewhere\onyourdisk"
$Ziel = "D:\somewhereelse\onyourdisk"
$Zeitvergleich = (Get-date).AddDays(-6)
$dirs = Get-ChildItem $Quelle -filter erp* | % {$_.fullname}
foreach($dir in $dirs){
$dir = Get-Childitem $dirs | where-object {$_.LastWriteTime -gt $Zeitvergleich} | Copy-Item -Path {$_.Fullname} $Ziel -recurse
}
I pimp’d my script to move the directories with move-item, there is a nice way to change the -Destination String with Replace
$Quelle = "D:\somewhere\onyourdisk"
$Ziel = "D:\somewhereelse\onyourdisk"
$Zeitvergleich = (Get-date).AddDays(-6)
$dirs = Get-ChildItem $Quelle -filter erp* | % {$_.fullname}
$dir = Get-Childitem $dirs | where-object {$_.LastWriteTime -gt $Zeitvergleich}
foreach($item in $dir){
move-Item -Path $item.FullName -Destination $item.FullName.ToString().Replace($Quelle,$Ziel)
}
Tagesdatum in Batchdatei
So, damit ich es nicht schon wieder vergesse
jetzt mal als Blog.
Lösung für ein Tagesdatum in einer Batchdatei
FOR /F "tokens=1-3 delims=." %%J IN ("%date%") DO SET "Tagesdatum=%%L-%%K-%%J"
echo %Tagesdatum%
have a nice day (-:
