====== Shelltricks ======
Miscellaneous small shell scripts that I may or may not need again in the far future.
===== Check umask for all users =====
#!/bin/bash
for user in $(awk -F: '{print $1}' /etc/passwd); do
printf "%-20s" "$user" ; su -s /bin/bash -c 'umask' -l $user 2>/dev/null
done
Original source: https://unix.stackexchange.com/a/82645
===== Show the dates of the oldest unseen messages in multiple maildirs, newest first =====
Beware of weird directory names. I am not responsible if this somehow does an ''rm -rf --no-preserve-root /'' or something.
for dir in /var/vmail/domain/*/Maildir/new /var/vmail/domain/*/Maildir/.*/new; do
echo -e "$(stat -c %y $dir/$(ls -Art $dir | head -1))\t$dir"
done | grep -v '/\./' | sort -rn
Same thing, but for the newest seen messages:
for dir in /var/vmail/domain/*/Maildir/cur /var/vmail/domain/*/Maildir/.*/cur; do
echo -e "$(stat -c %y $dir/$(ls -At $dir | head -1))\t$dir"
done | grep -v '/\./' | sort -rn
The only differences are the folders (''cur'' vs. ''new'') and the sorting done by ''ls''.
===== Extract IP addresses from "ip a" output by regex =====
Might be useful for scripting, I guess.
IPRE='192\.168\.1\.|2001:1234:'
ip a s up | grep -Eo "inet6? [^ /]+" | cut -d' ' -f2 | grep -E "$IPRE"
This prints:
192.168.1.123
2001:1234:5678:90ab:cdef:1234:5678:90ab