Command and Script Reference
Important: most scripts are tested and have been used and modified over time. Nevertheless, use with caution and your own risk!
I might add a description to them, but nothing planned yet. For now, this is my scrapyard of commands and scripts. Take what you need, modify, delete, combine, etc.
Linux
Bash Scripting Basics #
some_command | jq -r '.[].name' | while IFS= read -r name; do
./your-script.sh "$name"
done
#!/bin/bash
set -Eeuo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
set -a
source $SCRIPT_DIR/.env
set +a
Run multiple commands at once #
{ cmd() { printf "\n# %s\n" "$*"; "$@"; }; \
cmd dig MX example.com +short; \
cmd dig TXT example.com +short; \
cmd dig TXT _dmarc.example.com +short; \
cmd dig TXT *._domainkey.example.com +short; \
} 2>&1
Looping through commands with list of items #
while read ip; do
sudo ufw allow in on eth0 from $ip to 192.0.2.0/24 port 80 proto tcp
sudo ufw allow in on eth0 from $ip to 192.0.2.0/24 port 443 proto tcp
done < whitelist.txt
# Second Example
while read domain; do
echo "$domain"
dig MX $domain +short
dig TXT $domain +short
dig TXT _dmarc.$domain +short
dig TXT *._domainkey.$domain +short
echo ""
done < domain-list.txt
Simple for-loop #
for i in $(seq 1 101); do curl -s -o /dev/null -w "%{http_code}\n"
http://localhost:8000/api/ip/8.8.8.8; done
Delete all files in current directory where the first lines contains term #
find . -type f -exec sh -c 'head -n1 "$1" | grep -q "SSL-VPN is disabled" && rm -f "$1"' _ {} \;
Searching, sorting, counting #
# count files in dir
find . -maxdepth 1 -type f | wc -l
# get line count of each file in directory
for f in *; do wc -l "$f" ; done | sort -h
# show counter for unique lines
sort file.txt | uniq -c | sort -nr
# Too lazy to write those out for now
find / -type f -name “inventory.ini” 2>/dev/null
for file in *.md; do mv "$file" "prefix_$file"; done
python3 -m http.server 9100 --bind 10.20.30.57 --directory /path/to/directory
find . -maxdepth 1 -type f | wc -l
grep -rl "SSL-VPN is disabled" . --include="*.logs" | wc -l
find . -type f -exec grep -l 'SSL-VPN is disabled' {} + | wc -l
find . -type f -exec grep -lZ 'SSL-VPN is disabled' {} + | xargs -0 rm -f
find . -maxdepth 1 -type f -exec head -n -10 {} \;
find . -type f -exec cat -- {} + | less
Save remote certificate to file #
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null 2>/dev/null \
| openssl x509 -outform PEM > remote-cert.pem
Podman #
# Container healthcheck
podman run -d --name web \
--health-cmd='curl "http://192.168.250.250:3001/api/push/FHahMOAw7p?status=up&msg=OK&ping=" || exit 1' \
--health-interval=60s \
--health-timeout=3s \
--health-retries=3 \
nginx:alpine
# Limiting resources
--cpus=0.3 \
--memory=2g \
--memory-swap=2.5g \
--cpu-shares=512 \
# Hardening
--read-only \
--security-opt no-new-privileges \
--cap-drop ALL \
--cap-add=CHOWN \
--cap-add=NET_BIND_SERVICE \
--cap-add=SETGID \
--cap-add=SETUID \
--tmpfs /tmp:rw,size=256m \
# User ID / Quadlet
UserNS=keep-id:uid=1000,gid=1000
User=1000
Group=1000
Curl #
# Simple API Call with Bearer
curl -X POST http://localhost:8000/api/run1/ \
-H "Authorization: Bearer 9d207bf0-10f5-4d8f-a479-22ff5aeff8d1" \
-d "host_a,is ok"
SSH #
# for automated run
-o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no"
# keep alive for longer sessions
-o ServerAliveInterval=60 -o ServerAliveCountMax=3
Lingering #
loginctl show-user "$USER" -p Linger
sudo loginctl enable-linger USERNAME
Grep #
# default
grep -Iris SEARCHTERM .
# exclude
--exclude-dir=venv
Windows
Powershell #
Run command every n seconds #
Like watch -n 3 cmd on linux.
while($true){Invoke-WebRequest "http://192.168.18.6:8081/api/push/vmXn4K7PYl?status=up&msg=OK&ping=" -UseBasicParsing | Out-Null; Start-Sleep 60}
Simple API call #
$hostname = $env:COMPUTERNAME
$status = "OK"
$body = "$hostname,$status"
$headers = @{
"Authorization" = "Bearer 9d207bf0-10f5-4d8f-a479-22ff5aeff8d1"
}
$domain = "http://example.com:8000/api/test1/"
Invoke-RestMethod -Uri $domain -Method Post -Body $body -Headers $headers