Background
This post should serve as a repository of selected use-case reqular expressions, sorted by utility/name. It is predominantly centered around Linux and user-space utilies (with a certain amount of Cisco IOS-based examples as well in its heading and subheadings). It will hopefully be continually updated as I intent to keep adding to it as I see buld more regular expression use cases.
MDADM
The following was useful to gather mdadm information when I had an issue with a missing block device in a RAID array (which turned out to be SATA cables that where accidently swapped when performing maintenance/cleaning causing device unexpected device renaming which ultimately bumped a device off the array - sdb in my case). The examples here uses simple patterns to show the linux block devices in an array and looking for log entries
user@host:~$ sudo mdadm --detail /dev/md0 | egrep '\/dev\/sd?'
3 8 64 0 active sync /dev/sde
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
user@host:~$ cat /etc/mdadm/mdadm.conf | egrep '\/dev\/sd?'
DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde
user@host:~$
user@host:~$ sudo dmesg | grep md0
[ 2.701684] md/raid:md0: device sdc operational as raid disk 1
[ 2.701686] md/raid:md0: device sdd operational as raid disk 2
[ 2.701687] md/raid:md0: device sde operational as raid disk 0
[ 2.702549] md/raid:md0: raid level 5 active with 3 out of 3 devices, algorithm 2
[ 2.702574] md0: detected capacity change from 0 to 8001304920064
user@host:~$
HDPARM
For similar reasons to the MDADM, I initially suspected that a disk was faulty and wanted to extract the serial numbers of each for warranty lookup. This is how I acheived that outcome (sans actual serial numbers).
user@host:~$ sudo hdparm -I /dev/sd? | egrep '(\/dev\/sd?|Serial\ Number)'
/dev/sda:
Serial Number: *** REDACTED ***
/dev/sdb:
Serial Number: *** REDACTED ***
/dev/sdc:
Serial Number: *** REDACTED ***
/dev/sdd:
Serial Number: *** REDACTED ***
/dev/sde:
Serial Number: *** REDACTED ***
user@host:~$
SCREEN
So, sometimes a screen is killed or exited (often accidently) and rather than opening up the local user screenrc file, looking for the screen/entry/command and then executing the screen command manually to restore it, with the help of grep, I simply execute it dirrectly with bash substitution. Here are a couple of examples:
$(grep virsh ~/.screenrc)
$(grep /var/log/messages ~/.screenrc)
$(grep virt_snapshot ~/.screenrc)
LVM
At some point, we might need to review LVM volumes to see where we can scale and resize etc. The following allowed me to quickly see everything at a glance in order to formulate a plan for resizing.
user@host:~$ sudo lvdisplay | egrep "LV (Name|Size)"
[sudo] password for user:
LV Name video
LV Size <4.02 TiB
LV Name audio
LV Size 750.00 GiB
LV Name hdimg
LV Size <2.51 TiB
LV Name swap
LV Size 16.00 GiB
LV Name var-tmp
LV Size 8.00 GiB
user@host:~$
Cisco IOS
A collection of various Cisco IOS commands and the very limited IOS regular expression engine on an IOS device (or IOS-XE's IOSD).
show version
Show a consolidated view of uptime, firmware and software version & reason for reload (minus all the Cisco copyright and releng information):
SWITCH#show ver | incl Cisco IOS Software|(ROM|BOOTLDR)|uptime|System (returned|restarted|image)
Cisco IOS Software, C3750 Software (C3750-IPSERVICESK9-M), Version 15.0(2)SE11, RELEASE SOFTWARE (fc3)
ROM: Bootstrap program is C3750 boot loader
BOOTLDR: C3750 Boot Loader (C3750-HBOOT-M) Version 12.2(44)SE5, RELEASE SOFTWARE (fc1)
SWITCH uptime is 1 week, 3 days, 22 hours, 29 minutes
System returned to ROM by power-on
System restarted at 12:28:16 WST Sun Sep 17 2023
System image file is "flash:/c3750-ipservicesk9-mz.150-2.SE11.bin"
SWITCH#
show etherchannel
Show portchannel member state times - This is particularly useful in correlating events for possible cause without having to rely on syslog:
SWITCH#show etherchannel 1 detail | incl ^(Port: |Age of the port)
Port: Gi1/0/15
Age of the port in the current state: 10d:22h:41m:32s
Port: Gi1/0/16
Age of the port in the current state: 10d:22h:41m:31s
Port: Gi1/0/17
Age of the port in the current state: 10d:22h:41m:30s
Port: Gi1/0/18
Age of the port in the current state: 10d:22h:41m:30s
SWITCH#