Skip to content

Instantly share code, notes, and snippets.

View lilydjwg's full-sized avatar
🙃
dissappointed about the new UI and round avatars

依云 lilydjwg

🙃
dissappointed about the new UI and round avatars
View GitHub Profile
@lilydjwg
lilydjwg / colors.py
Last active May 29, 2026 12:33
colors.py: show all kinds of terminal colors at a glance
#!/usr/bin/python3
from functools import partial
def colors16():
for bold in [0, 1]:
for i in range(30, 38):
for j in range(40, 48):
print(f'\x1b[{bold};{i};{j}m {bold};{i};{j} |\x1b[0m', end='')
print()
@lilydjwg
lilydjwg / banchannelbot.py
Created September 14, 2025 02:50
Telegram to ban any public channel from a group
#!/usr/bin/python3
import asyncio
from typing import NamedTuple
import logging
from aiogram import Bot, Dispatcher, types, loggers
from aiogram import exceptions
from aiogram.filters.command import Command
@lilydjwg
lilydjwg / lxc-arch2
Last active March 26, 2026 23:00
lxc-arch2: a script to create a copy of my Arch Linux system in systemd-nspawn for testing
#!/bin/zsh -e
cd ~/tmpfs
mkdir -p .lxc-root .lxc-data/root/etc .lxc-work
sudo GDK_DPI_SCALE=$GDK_DPI_SCALE zsh -e - <<'EOF'
chown 0:0 .lxc-data/root .lxc-data/root/etc
modprobe overlay
mountpoint .lxc-root || mount -t overlay -o lowerdir=/,upperdir=$PWD/.lxc-data/root,workdir=$PWD/.lxc-root overlayfs $PWD/.lxc-root
@lilydjwg
lilydjwg / .gitconfig
Created April 25, 2016 05:44
gitconfig (for older versions of git)
[color]
diff = auto
status = auto
branch = auto
grep = auto
showbranch = auto
[core]
excludesfile = ~/.gitconfig.d/gitignore
quotepath = false
[alias]
@lilydjwg
lilydjwg / mynetns_run
Created May 13, 2016 14:27
mynetns_run: Run a program in a seperate network namespace
#!/bin/bash -e
NETNS_FILE=/var/run/netns/mynet
MNTNS_FILE=/var/run/ns/mynet_mnt
if [[ ! -f $NETNS_FILE ]]; then
ip netns add mynet
ip link add mynet0 type veth peer name mynet1
ip link set mynet0 up
@lilydjwg
lilydjwg / zfs-show
Created January 1, 2017 08:53
zfs-show: a wrapper to `zfs get` to show values from multiple properties in a table nicely
#!/usr/bin/env python3
import sys
import subprocess
from collections import namedtuple, OrderedDict
Record = namedtuple('Record', 'name property value source')
def get_widths(item):
return [len(x) for x in item.values()]
@lilydjwg
lilydjwg / readonlyroot
Created May 15, 2017 05:03
readonlyroot: make / readonly but permit writes to some paths
#!/bin/bash -e
if [[ $EUID -ne 0 ]]; then
echo >&2 "Need to be root."
exit 1
fi
if ! mountpoint /mnt >/dev/null; then
exit 2
fi
@lilydjwg
lilydjwg / mosh3.py
Created November 13, 2018 07:11
mosh3: a mosh helper that reuses ssh connections (ControlMaster)
#!/usr/bin/env python3
# inspired by
# https://github.com/mobile-shell/mosh/issues/24#issuecomment-201893250
import sys
import os
import subprocess
def main():
@lilydjwg
lilydjwg / show-mem-usage
Last active March 26, 2026 22:33
show-mem-usage: parse /proc/{pid}/maps and show how much memory is used by each file/type
#!/usr/bin/python3
'''parse /proc/{pid}/smaps and show how much RSS memory is used by each file/type'''
import sys
from collections import defaultdict
def filesize(size: int) -> str:
units = 'KMGTPEZY'
left = abs(size)
@lilydjwg
lilydjwg / btrfs-autosnapshot
Last active December 21, 2025 17:04
btrfs-autosnapshot
#!/usr/bin/python3
import os
import datetime
import subprocess
import logging
import tempfile
import contextlib
from pathlib import Path