Skip to content

Instantly share code, notes, and snippets.

@dzerrenner
dzerrenner / Fatfingered-sudoers-file.md
Created January 11, 2021 17:01
How to restore a fatfingered sudoers file

I recently fatfingered my sudoers file on a Ubuntu 20.04 machine. All commands involving sudo failed with a core dump. Here's how I got it back:

I found a tip somewhere on stackoverflow: use pkexec. This utilizes Policykit (http://manpages.ubuntu.com/manpages/focal/man8/polkit.8.html). In short: pkexec can run programs as root. In my case I had also to use pkttyagent to provide an authorization context. This works as follows (got it from: https://askubuntu.com/a/1053617)

  1. Open 2 termianl windows / ssh sessions.
  2. Get the PID of the shell process from the first one (echo $$)
@dzerrenner
dzerrenner / denonavr.py
Created December 28, 2020 00:11
Simple python aiohttp server to switch input channels on Denon-AVRs
import logging
import denonavr
from aiohttp import web
from rich.logging import RichHandler
DEBUG = False
IP_RECEIVER = '192.168.2.187'
async def channel(request):
@dzerrenner
dzerrenner / fields.py
Last active December 30, 2022 15:21 — forked from danni/fields.py
Multi Choice Django Array Field with Checkbox Widget
from django import forms
from django.contrib.postgres.fields import ArrayField
class ChoiceArrayField(ArrayField):
"""
A field that allows us to store an array of choices.
Uses Django 1.9's postgres ArrayField
and a MultipleChoiceField for its formfield.
@dzerrenner
dzerrenner / test_ntp.py
Created November 12, 2019 09:06
Test NTP connection with pytest
import ntplib
import pytest
from time import ctime
class Test_ntp(object):
@pytest.mark.report_section("NTP")
def test_ntp(self, ipsec, ntpserver):
"""
NTP-Request via ipsec from different environments.
"""
@dzerrenner
dzerrenner / Jenkinsfile
Created November 12, 2019 09:03
Jenkins: execute pytest on remote machines
library 'openstack'
def target_ip
def vm_id
pipeline {
agent any
parameters {
choice(choices: "IntegEnv\ProdEnv\TestEnv", description: "Environment", name: 'TESTENV')
@dzerrenner
dzerrenner / Jenkinsfile
Created November 12, 2019 09:00
Jenkins pipelines: parallel execution
pipeline {
agent any
stages {
stage('SmokeTest'){
parallel{
stage('SmokeTest ProdEnv') {
steps {
echo 'Sanity Testing Production Environment',
build job: 'smoke test',
@dzerrenner
dzerrenner / check-snmp-load.sh
Created November 12, 2019 08:31
Check load with snmpwalk
#!/bin/bash
SYSTEMS = ("testDNS", "productionDNS", "integrationDNS", "testVPN", "productionVPN", "integrationVPN")
IP_ADDR = ("172.16.47.11", "10.0.47.11", "192.168.47.11", "172.16.13.37", "10.0.13.37", "192.168.13.37")
for INDEX in ${!SYSTEMS[@]}; do
echo Testing: ${SYSTEMS[INDEX]} Address: ${IP_ADDR[INDEX]}
snmpwalk -v -2c -c community ${IP_ADDR[INDEX]} UCD-SNMP-MIB:laLoad.1
echo
done
@dzerrenner
dzerrenner / README.md
Last active December 11, 2018 12:01 — forked from cassus/admin.py
Django admin action as row button

Summary

This enables simple action buttons per entity in the admin list_view. This was adapted for Django 2.1 and is a bit more general than the original it was forked from.

Usage

@dzerrenner
dzerrenner / twittercustom.css
Last active September 8, 2019 00:41
Custom CSS stylesheet for twitter - de-roundify avatars and some buttons
@-moz-document domain(twitter.com) {
div.DMAvatar.u-chromeOverflowFix {
border-radius: 5px !important;
}
.avatar, .Avatar, .nav .session .dropdown-toggle, .EdgeButton, .EdgeButton:visited, .global-nav .search-input, .avatar--circular {
border-radius: 5px !important;
}
.ProfileCard-avatarLink, .ProfileCard-avatarImage, .DashboardProfileCard-avatarImage {
@dzerrenner
dzerrenner / exif.py
Created November 30, 2015 12:32
Read EXIF data and change file creation time accordingly
from datetime import datetime
import exifread
import pywintypes
import win32con
import win32file
import os
from pytz import timezone
LOCAL_TZ = timezone('Europe/Berlin')