script

Delete Older Files

Written by  on August 11, 2019
$Path = "C:\temp"
$Daysback = "-30"
 
$CurrentDate = Get-Date
$DatetoDelete = $CurrentDate.AddDays($Daysback)
Get-ChildItem $Path | Where-Object { $_.LastWriteTime -lt $DatetoDelete } | Remove-Item

Powershell: Delete files older than

openssl nameopt

Written by  on Dezember 18, 2018

OpenSSL unterstützt eine nette Option, falls man den Output in einem Script weiterverarbeiten will.
Hier die normale Ausgabe:

openssl x509 -in test.cer -noout -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            55:0d:00:d6:79:bf:17:7b
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = US, O = Google Trust Services, CN = Google Internet Authority G3
        Validity
            Not Before: Nov 27 14:02:00 2018 GMT
            Not After : Feb 19 14:02:00 2019 GMT
        Subject: C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.google.com

Und hier die Multiline Ausgabe:

openssl x509 -in test.cer -noout -text -nameopt multiline
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            55:0d:00:d6:79:bf:17:7b
    Signature Algorithm: sha256WithRSAEncryption
        Issuer:
            countryName               = US
            organizationName          = Google Trust Services
            commonName                = Google Internet Authority G3
        Validity
            Not Before: Nov 27 14:02:00 2018 GMT
            Not After : Feb 19 14:02:00 2019 GMT
        Subject:
            countryName               = US
            stateOrProvinceName       = California
            localityName              = Mountain View
            organizationName          = Google LLC
            commonName                = *.google.com

Dokumentation

Registry bearbeiten

Written by  on Dezember 6, 2018

Einträge in der Windows Registry lassen sich auch mit der Powershell einfach bearbeiten. Das kann etwa sinnvoll sein, wenn man von einem lokalen Administrator Account Einträge für Benutzer setzen muss. Problem dabei ist, dass die Powershell nur eigene Laufwerke für HKCU: und HKLM: erstellt. Damit kommt man nur in die Einstellungen vom Current User oder von Local Machine.
Glücklicherweise werden unter Accessing HKEY_USERS With Powershell
gleich verschiedene Methoden vorgestellt wie das trotzdem funktioniert.
Sinnvoll scheint mir, mit

New-PSDrive HKU Registry HKEY_USERS

ein neues Laufwerk anzulegen oder direkt ohne Powershell Laufwerksbuchstaben einen Wert zu setzen

Set-ItemProperty -Path Microsoft.PowerShell.Core\Registry::HKEY_USERS\S-1-5-21-1234567890-xxxxxxxxxx-yyyyyyyyyy-zzzzz\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name Wallpaper -Value C:\Pictures\cats.jpg

Ubuntu 18.10 Cosmic Cuttlefish

Written by  on Oktober 22, 2018

Ubuntu 18.10 Cosmic Cuttlefish und die Hostname Umbenennung
Eben das neue Ubuntu aufgesetzt. In einer Virtual Box. Aber eigentlich brauch ich gleich zwei solche Maschinen. Also was liegt näher als die VM zu klonen. Geht ja einfach, sogar eine neue MAC Adresse wird generiert. Jetzt noch schnell den zweiten Server umbenannt in /etc/hostname -> reboot -> hostname ist wieder der von Maschine 1.
Suchen, googlen, setzen mit hostname command. Reboot. Und immer wieder zurück auf dem alten Hostname. Was ist da los Ubuntu?
Es finden sich erste Hinweise dass das an cloud-init liegt. Was macht das mit meinem hostname, bitteschön? Auch DHCP wird nicht frisch geholt, aber das ist eine andere Geschichte…
/var/lib/cloud/instances/3f1ebbef-73c0-49db-9207-fde1dce2b8f4/cloud-config.txt
Exakt hier kann man den hostnamen ändern. Reboot und es wurde übernommen!
Update: Einen Reboot später -> wieder der alte Hostname!
Update: Um Ubuntu zu klonen und umzubenennen muss man diesen cloud configuration service abändern:
/etc/cloud/cloud.cfg

# This will cause the set+update hostname module to not operate (if true)
preserve_hostname: true

grep binary file

Written by  on Oktober 5, 2018
Binary file (standard input) matches
-a | --text
Process a binary file as if it were text; this is equivalent to the ‘--binary-files=text’ option.

Dosbox unter Windows 10

Written by  on Juli 26, 2018

Mit einer kleinen Batch Datei kann man ganz einfach die Dosbox mit der im aktuellen Ordner nötigen Konfig aufrufen:

"c:\Program Files (x86)\DOSBox-0.74\DOSBox.exe" -conf dosboxMM4-5.conf

JPEG Dateierweiterung erzeugen

Written by  on Juli 22, 2018

Einen Haufen Files im LOST Ordner. Ohne erweiterung. Aber fast alles Fotos…
Bitte einmal mit Mobaxterm und der Bash auf .jpg Umbenennen:

ls -1 | while read LINE; do mv $LINE $LINE.jpg; done

Powershell: Get-ADComputer

Written by  on Juli 20, 2018

Eine Liste von Computerobjekten aus dem Active Directory holen. Nur Rechnernamen anzeigen

Get-ADComputer -Filter 'CN -Like "Prefix*"' | Select -Expand Name

Verify X509 Certificate

Written by  on September 8, 2017

Es ist nicht ausreichend nur den Private Key zu überprüfen!
OpenSSL bietet auch eine einfache Möglichkeit einen CSR zu prüfen:

openssl req -in example.csr -verify
verify OK

Beim Public Key wird es komplizierter. Einzig eine Prüfung mit der Signatur der übergeordneten CA hilft. Hier eine erste Version eines Prüfscriptes.

#!/bin/bash
if [[ $# -ne 1 ]]; then
  echo "Wrong number of arguments."
  exit 1
fi

FILE=$1

# Allows to configure different openssl version
OPENSSL=$(which openssl)
TEMPDIR="/tmp
USERAGENT="CustomUserAgent"
# A proxy server would also get configured here
WGETOPTS="--user-agent=${USERAGENT} --timeout=5 --tries=1 -e"

SIGNER=$($OPENSSL x509 -in ${FILE} -text -noout | grep "CA Issuers - URI:http" | cut -d":" -f2- | tr -d '\r')
if [[ -z $SIGNER ]]; then
  echo "No issuer certificate found for download."
  exit 1
fi
SIGNERFILE=$(awk -F'/' '{print $NF}' <<<$SIGNER)

/usr/bin/wget $WGETOPTS $SIGNER -O $TEMPDIR/$SIGNERFILE >/dev/null 2>&1

# Try to convert to PEM
$OPENSSL x509 -inform der -in $TEMPDIR/$SIGNERFILE -out $TEMPDIR/$SIGNERFILE.cer 2>/dev/null
if [[ -s $TEMPDIR/$SIGNERFILE.cer ]]; then
  # use converted file, if conversation was successfull
  SIGNERFILE="$SIGNERFILE.cer"
fi
echo -n "Certificate verification: "
$OPENSSL verify -CAfile $TEMPDIR/$SIGNERFILE -partial_chain $FILE 2>&1 | grep -e "certificate signature failure" -e "OK" | cut -d":" -f2

# Cleanup
if [[ ! -z $SIGNERFILE ]]; then
  /bin/rm $TEMPDIR/$SIGNERFILE*
fi

Pipe View

Written by  on August 17, 2017

Beobachten wie viele Daten durch eine Pipe in einem Shellscript durchgehen:

dd if=example.img bs=1M | pv | dd of=/dev/sdXX

Beispiel Output:

1.16GiB 0:09:37 [4.76MiB/s] [                                   <=>           ]