utils/README.md
2024-06-28 00:07:42 +03:00

10 KiB

utils

Small tools needed to solve immediate tasks independently or as part of a project


build-python.sh

Description:

Building Python from sources.

Dependencies:

POSITION PARAMETERS DESCRIPTION DEFAULT
1 [qn] execution without pauses
2 [version] version of Python 3.9.5
3 [path/to/log] path to log /dev/null

Example usage build-python.sh in terminal with make the script executable

wget https://git.hmp.today/pavel.muhortov/utils/raw/branch/master/build-python.sh
chmod u+x ./build-python.sh
sudo ./build-python.sh - 3.9.5

Example usage build-python.sh in terminal without download

sudo su - -c "bash <(curl -s https://git.hmp.today/pavel.muhortov/utils/raw/branch/master/build-python.sh) qn 3.9.5 install-python.log"

cert-info.sh

Description:

Get certificate info.

Dependencies:

POSITION PARAMETERS DESCRIPTION DEFAULT
1 [hostname:port | /path/to/cert] certificate location
2 [-e] print of the expired date timestamp
2 [-f] print of the fingerprint
2 [-r] print of the remaining days

Example usage cert-info.sh in terminal with make the script executable

# download
sudo wget https://git.hmp.today/pavel.muhortov/utils/raw/branch/master/cert-info.sh -O /usr/local/bin/cert-info.sh
sudo chmod +x /usr/local/bin/cert-info.sh
# check cert
cert-info.sh www.hmp.today
cert-info.sh /etc/ssl/certs/ca-certificates.crt

Example usage cert-info.sh in terminal without download

bash <(curl -s https://git.hmp.today/pavel.muhortov/utils/raw/branch/master/cert-info.sh) www.hmp.today
bash <(wget -qO- https://git.hmp.today/pavel.muhortov/utils/raw/branch/master/cert-info.sh) www.hmp.today

Example usage cert-info.sh in Zabbix

# download
sudo wget https://git.hmp.today/pavel.muhortov/utils/raw/branch/master/cert-info.sh -O /usr/lib/zabbix/externalscripts/cert-info.sh
sudo chmod +x /usr/lib/zabbix/externalscripts/cert-info.sh

Zabbix Server - Administration - Scripts - Create scripts

PARAMETER VALUE
Name Check SSL certificate
Scope Manual host action
Type Script
Execute on Zabbix server (proxy)
Commands /usr/lib/zabbix/externalscripts/cert-info.sh {$URL}
Description Load certificate info from {$URL} host macro

Zabbix Server - Configuration - Hosts - "hostname" - Macros - Add

MACRO VALUE
{$URL} hostname:port

Zabbix Server - Monitoring - Hosts - "hostname" - Check SSL certificate


ds18b20-over-ssh.sh

Description:

Get ds18b20 sensor value.

Dependencies:

POSITION PARAMETERS DESCRIPTION DEFAULT
1 [host] ssh host REQUIRED
2 [port] ssh port REQUIRED
3 [user] ssh username REQUIRED
4 [pass] ssh password REQUIRED
5 [node] ds18b20 node REQUIRED

Example usage ds18b20-over-ssh.sh in terminal with make the script executable

# download
sudo wget https://git.hmp.today/pavel.muhortov/utils/raw/branch/master/ds18b20-over-ssh.sh -O /usr/local/bin/ds18b20-over-ssh.sh
sudo chmod +x /usr/local/bin/ds18b20-over-ssh.sh
# check ds18b20 value
ds18b20-over-ssh.sh host.domain.zone 22 root password 28-0a1b2c3d4e5f

Example usage ds18b20-over-ssh.sh in terminal without download

bash <(curl -s https://git.hmp.today/pavel.muhortov/utils/raw/branch/master/ds18b20-over-ssh.sh) host.domain.zone 22 root password 28-0a1b2c3d4e5f
bash <(wget -qO- https://git.hmp.today/pavel.muhortov/utils/raw/branch/master/ds18b20-over-ssh.sh) host.domain.zone 22 root password 28-0a1b2c3d4e5f

Example usage ds18b20-over-ssh.sh in Zabbix

# download
sudo wget https://git.hmp.today/pavel.muhortov/utils/raw/branch/master/ds18b20-over-ssh.sh -O /usr/lib/zabbix/externalscripts/ds18b20-over-ssh.sh
sudo chmod +x /usr/lib/zabbix/externalscripts/ds18b20-over-ssh.sh

Zabbix Server - Administration - Scripts - Create scripts

PARAMETER VALUE
Name Check ds18b20 over SSH
Scope Manual host action
Type Script
Execute on Zabbix server (proxy)
Commands /usr/lib/zabbix/externalscripts/ds18b20-over-ssh.sh {$HOST} {$PORT} {$USER} {$PASS} {$NODE}
Description Get temperature from {$NODE} sensor over SSH

Zabbix Server - Configuration - Hosts - "hostname" - Macros - Add

MACRO VALUE
{$HOST} host.domain.zone
{$PORT} 22
{$USER} root
{$PASS} password
{$NODE} 28-0a1b2c3d4e5f

Zabbix Server - Monitoring - Hosts - "hostname" - Check ds18b20 over SSH


sendmail.py

Description:

Sending email from Python.

Dependencies:

PARAMETERS DESCRIPTION DEFAULT
-u, --user smtp valid user REQUIRED
-p, --pass smtp valid password REQUIRED
-d, --dest destination addresses REQUIRED
[-h] print help and exit
[--smtp] smtp hostname or ip address smtp.gmail.com
[--port] smtp port number 587
[--stls] smtp required TLS True
[--from] mail from alias --user value
[--subj] mail subject 'no subject'
[--text] mail body text 'no text'
[--type] mail body type: plain, html plain
[--file] mail attachment files None
[--time] minutes of attempts to send 3

Example usage sendmail.py in terminal with make the script executable

# download
sudo wget https://git.hmp.today/pavel.muhortov/utils/raw/branch/master/sendmail.py -O /usr/local/bin/sendmail.py
sudo chmod +x /usr/local/bin/sendmail.py
# example 1
sendmail.py -u user@gmail.com -p password -d addr1@gmail.com,addr2@gmail.com
# example 2
/usr/local/opt/python-3.9/bin/python3.9 /usr/local/bin/sendmail.py -u user@gmail.com -p password -d addr1@gmail.com,addr2@gmail.com --file "/path/to/file1,/path/to/file2"

Example usage sendmail.py in terminal without download

python3 <(curl -s https://git.hmp.today/pavel.muhortov/utils/raw/branch/master/sendmail.py) \
    --user user@gmail.com \
    --pass password \
    --dest addr1@gmail.com,addr2@gmail.com \
    --subj "test subject" \
    --text "test body" \
    --file "/path/to/file1,/path/to/file2"

Example usage sendmail.py in Python

from sendmail import Mail

msg = Mail(smtp_user='user@gmail.com', smtp_pass='password', mail_dest='addr1@gmail.com,addr2@gmail.com')
log = msg.send()
print(log)

simplewc.py

Description:

Update Let's Encrypt wildcard certificate with DNS-01 challenge.

Dependencies:

PARAMETERS DESCRIPTION DEFAULT
--domain domain for which the wildcard certificate is issued REQUIRED
--server master server containing the domain zone REQUIRED
--keyname name of the key to update the zone REQUIRED
--keydata content of the key to update the zone REQUIRED
[-h] print help and exit
[--acmepath] alternative path to bin (example: ~/.acme.sh/acme.sh) None
[--force] "force" argument for the acme.sh False
[--test] "test" argument for the acme.sh False

Example usage simplewc.py in cron with Python

# at 00:00 on Monday
0 0 * * 1 /usr/bin/python3 ~/simplewc.py --domain EXAMPLE.COM --server 8.8.8.8 --keyname KEY --keydata YOU_KEY_CONTENT > /dev/null
# 00:00 on day-of-month 1 and 15
0 0 1,15 * * /usr/bin/python3 ~/simplewc.py --domain EXAMPLE.COM --server dyn.dns.he.net --keyname - --keydata YOU_DDNSKEY > /dev/null

Example usage simplewc.py in terminal with make the script executable

chmod u+x ./simplewc.py
./simplewc.py --domain EXAMPLE.COM --server 8.8.8.8 --keyname KEY --keydata YOU_KEY_CONTENT --test --force
./simplewc.py --domain EXAMPLE.COM --server dyn.dns.he.net --keyname - --keydata YOU_DDNSKEY --test --force