Skip to content

Instantly share code, notes, and snippets.

View ilyaevseev's full-sized avatar

Ilya Evseev ilyaevseev

  • Loyaltyplant.com
  • Nazareth, Israel
  • 21:11 (UTC +03:00)
  • LinkedIn in/ilyaevseev
View GitHub Profile
@ilyaevseev
ilyaevseev / find-proxmox-macaddr-dups.pl
Created November 21, 2021 21:39
Find MAC address dups in Proxmox environment, happen after VM/CT cloning
#!/usr/bin/perl
# string samples:
# /etc/pve/nodes/node1/lxc/123.conf:net0: name=eth0,bridge=vmbr0,firewall=1,gw=10.20.30.1,hwaddr=1A:2A:3A:CC:C0:0A,ip=10.20.30.40/24,type=veth
# /etc/pve/nodes/pm8/qemu-server/134.conf:net0: virtio=A1:B2:C3:B4:D5:E6,bridge=vmbr0,firewall=1
use strict;
use warnings;
open F, "grep -R hwaddr= /etc/pve |" or die "Cannot grep /etc/pve: $!\n";
@ilyaevseev
ilyaevseev / Kerio-connect-nginx.conf
Last active October 20, 2021 17:02
Copy Kerio Connect backups to Hetzner backup server.
server {
listen 80;
listen [::]:80;
server_name mail.remotesrv.ru;
location /.well-known { alias /var/www/letsencrypt/.well-known; }
location / { return 308 https://mail.remotesrv.ru$request_uri; }
}
@ilyaevseev
ilyaevseev / swap-flush.sh
Last active July 13, 2021 22:33
Flush Linux swap back to RAM, suppresses alerting in Zabbix - useless for actual performance tuning
#!/bin/sh
test "0" = "$(grep -vc '^Filename' /proc/swaps)" && exit 0 # ..no swaps
SWAP_FREE="$(awk '
/^SwapTotal:/ { total = $2 }
/^SwapFree:/ { unused = $2 }
END { printf "%d\n", 100 * unused / total }' /proc/meminfo)"
test "$SWAP_FREE" -lt "${SWAP_NEED_FREE:-55}" || exit 0
@ilyaevseev
ilyaevseev / find-jdups.py
Created June 23, 2021 06:05
Quick-n-dirty finder for duplicated classes in JAR-files
#!/usr/bin/python
# Usage sample:
# python find-jdups.py dir1 dir2 ... | grep -v = | sort | uniq | awk -F/ '{ print $NF }'
import os
import sys
import zipfile
pathlist = dict()
@ilyaevseev
ilyaevseev / cassandra.service
Created June 22, 2021 02:24
Systemd unit for starting Cassandra NoSQL server under Debian/Ubuntu
[Unit]
Description=Cassandra NoSQL DBMS
Requires=network.target
Wants=nss-online.target
After=nss-online.target network.target
Documentation=https://gist.github.com/s0undt3ch/969b744d3d7b88c29cba#gistcomment-3188779
[Service]
Type=forking
Restart=on-failure
@ilyaevseev
ilyaevseev / esdedupe.patch
Created March 17, 2021 00:37
Fix esdedupe runtime errors
diff --git a/esdedupe/esdedupe.py b/esdedupe/esdedupe.py
index 749615e..3e56e90 100755
--- a/esdedupe/esdedupe.py
+++ b/esdedupe/esdedupe.py
@@ -23,6 +23,7 @@ class Esdedupe:
def __init__(self):
self.log = getLogger('esdedupe')
+ self.total = 0
@ilyaevseev
ilyaevseev / zkDeleteOldLocks.py
Last active November 22, 2020 09:27
Delete old locks from Zookeeper
#!/usr/bin/python
import os
MAX_DEL = int(os.getenv('MAX_DEL','10'))
MAX_AGE = int(os.getenv('MAX_AGE', '7'))
DRY_RUN = int(os.getenv('DRY_RUN', '0'))
QUIET = int(os.getenv('QUIET', '0'))
import time
@ilyaevseev
ilyaevseev / killtree-multipass.sh
Last active October 12, 2020 23:25
Kill process tree - shell function and script.
#!/bin/sh
KILLSIG=""
walktree() { local p=""; for p in "$@"; do walktree $(pgrep -P "$p"); echo $p; done; }
test "${1#-}" != "$1" && KILLSIG="$1" && shift
test $# = "0" && echo "Usage: ${0##*/} pid ..." && exit
PIDS="$(walktree "$@")"
@ilyaevseev
ilyaevseev / sysctl-compare.pl
Created April 27, 2020 23:52
Compare two sysctl outputs.
#!/usr/bin/perl
use strict;
use warnings;
die "Usage: $0 sysctl1.lst sysctl2.lst\n" if @ARGV != 2;
sub file2list($) {
my $fname = shift;
open F, $fname or die "Cannot open $fname: $!\n";
@ilyaevseev
ilyaevseev / server.py
Last active December 17, 2019 12:52 — forked from mdonkers/server.py
Simple Python 3 HTTP server for logging all GET and POST requests
#!/usr/bin/env python3
"""
Very simple HTTP server in python for logging requests
Usage::
./server.py [<port>]
"""
from http.server import BaseHTTPRequestHandler, HTTPServer
import logging
class S(BaseHTTPRequestHandler):