Skip to content

Instantly share code, notes, and snippets.

@lessavin
lessavin / interface-restart.exp
Last active November 11, 2025 22:47
Expect script for restarting interface connection on Keenetic Start router.
#!/usr/bin/expect -f
# interface-restart.exp
# Expect script for restarting interface connection on Keenetic Start router.
set host $env(KEENETIC_HOST)
set port $env(KEENETIC_PORT)
set login $env(KEENETIC_LOGIN)
set password $env(KEENETIC_PASSWORD)
set interface $env(KEENETIC_INTERFACE)
set connection $env(KEENETIC_CONNECTION)
@lessavin
lessavin / mcutils-vanilla-latest.sh
Created October 26, 2025 20:11
Displays the latest Minecraft server version using the MC Utils API.
#!/usr/bin/sh
curl -s https://mcutils.com/api/server-jars/vanilla | jq -r '.[0].version'
@lessavin
lessavin / minecraft-server-version.sh
Last active October 26, 2025 20:48
Displays the Minecraft server version from server.jar (works since version 1.14).
#!/usr/bin/sh
unzip -p server.jar version.json | jq -r ".name"
@lessavin
lessavin / minecraft_server_backup.sh
Last active September 22, 2025 18:04
Minecraft server backup script.
#!/usr/bin/sh
# minecraft_server_backup.sh
# Minecraft server backup script.
# Before using this script, make sure that you install
# Minecraft server according to this guide:
# https://www.lessavin.ru/blog/minecraft-server.html
# Configuration.
# Minecraft server directory.
@lessavin
lessavin / pass2tsv.sh
Last active November 11, 2025 22:51
ZX2C4's password manager TSV exporter.
#!/bin/sh
# pass2tsv.sh
# ZX2C4's password manager TSV exporter.
pass grep --color=none . | sed -z -e 's/\x1b\[[0-9;]*m//g' -e 's/:\n/\t/g' | sort
@lessavin
lessavin / natcheck.sh
Last active November 18, 2025 21:35
Returns 1 if ISP put you under NAT.
#!/usr/bin/sh
# natcheck.sh
# Returns 1 if ISP put you under NAT.
# Source: https://superuser.com/questions/1630106/how-do-i-find-out-if-my-isp-has-put-me-behind-a-nat-will-dynamic-dns-work-with
NATCHECK_HOPS=2 # Change this value to <rounter_number>+1.
if [ $NATCHECK_HOPS -lt $(traceroute $(curl -s ifconfig.me) | grep ms | wc -l) ]
then
@lessavin
lessavin / minecraft-server.service
Last active July 27, 2025 16:55
Systemd service for Minecraft server.
[Unit]
Description=Minecraft Server
[Service]
WorkingDirectory=/srv/minecraft-server
User=minecraft-server
Group=minecraft-server
UMask=007
Restart=on-failure
RestartSec=60
@lessavin
lessavin / ssh2rcon.sh
Created June 28, 2024 20:35
Minecraft RCON connection via SSH.
# RCON is BAD, don't open this port! There no security for your server!
# Instead of this, use SSH:
# 1. Install on the server mcrcon by Tiiffi (https://github.com/Tiiffi/mcrcon).
# 2. Set environment variables as $MCRCON_HOST, $MCRCON_PORT and $MCRCON_PASS.
# 3. Use next script...
ssh $MCRCON_HOST mcrcon -H localhost -P $MCRCON_PORT -p $MCRCON_PASS $@
# You also can create command alias in .bashrc:
alias ssh2rcon='ssh $MCRCON_HOST mcrcon -H localhost -P $MCRCON_PORT -p $MCRCON_PASS'
@lessavin
lessavin / pyzamrename.sh
Last active June 8, 2024 16:59
Renames files according pyzam result
#!/bin/bash
# pyzamrename.sh
# Renames files according pyzam result
set -e
input=$(pyzam --input "$@")
artist=$(echo "$input" | grep 'Artist:' | cut -d ':' -f 2 | cut -c 2-)
if [ -z "$artist" ]; then
@lessavin
lessavin / terraria.service
Last active December 24, 2023 22:40 — forked from djagya/terraria.service
Terraria server in screen systemd service
# /home/steam/.config/systemd/user/Terraria.service
[Unit]
Description=Server daemon for Terraria
After=network.target
[Service]
WorkingDirectory=/home/steam/Steam/steamapps/common/Terraria
Restart=always