Skip to content

Instantly share code, notes, and snippets.

View cosimo's full-sized avatar
🇳🇴

Cosimo Streppone cosimo

🇳🇴
View GitHub Profile
@cosimo
cosimo / geoip2_lookup.py
Created September 16, 2022 16:16
Simple GeoIP2 IP latitude, longitude lookup in Python 3
#!/usr/bin/env python3
"""
Looks up an IP address using GeoLite2 City Database
"""
from functools import lru_cache
import geoip2.database
import geoip2.errors
@cosimo
cosimo / pre-commit.md
Last active February 9, 2023 17:18
Pre-commit checks with pre-commit python app

Pre-commit app usage

Installation

pip install pre-commit

Usage

@cosimo
cosimo / elasticsearch_out_of_sync_shards.py
Last active June 2, 2022 15:34
Check if any elasticsearch index replica shards are out-of-sync compared to the relative primary (used to rectify some network partition-caused outdated shard problems)
#!/usr/bin/env python3
# encoding: utf-8
"""
Identify out-of-sync replica shards for an Elasticsearch index
--------------------------------------------------------------
This program will output a list of all shards for a given index, identifying
the ones that are out-of-sync with respect to the primary shard.
@cosimo
cosimo / es-dump.sh
Created April 26, 2022 16:35
Basic usage of elasticsearch-dump
#!/bin/bash
ES_HOST=localhost
ES_PORT=9200
ES_USERNAME=elasticsearch
ES_PASSWORD=oohlala
ES_URL="https://$ES_USERNAME:$ES_PASSWORD@$ES_HOST:$ES_PORT"
dump_mapping() {
local index_name="$1"
@cosimo
cosimo / gcloud-snippets.sh
Created January 12, 2022 16:52
Random gcloud command line snippets
#!/bin/bash
# =============================================================================
#
# Very random gcloud related snippets
#
# =============================================================================
set -e
set -o nounset
@cosimo
cosimo / delete-unreferenced-charts.py
Created September 14, 2021 13:42
Clean up older versions of charts from chartmuseum
#!/usr/bin/env python3
import os
import yaml
import requests
CHARTMUSEUM_URL = 'https://your.chartmuseum.url'
@cosimo
cosimo / nvidia-kernel-crash.log
Last active August 9, 2021 09:28
nvidia modeset kernel crash + screen freeze
Aug 9 11:26:21 cosimo-desktop kernel: [8778506.500704] nvidia-modeset/: page allocation failure: order:4, mode:0x40cc0(GFP_KERNEL|__GFP_COMP), nodemask=(null),cpuset=/,mems_allowed=0
Aug 9 11:26:21 cosimo-desktop kernel: [8778506.500709] CPU: 1 PID: 244 Comm: nvidia-modeset/ Tainted: P OE 5.4.0-72-generic #80~18.04.1-Ubuntu
Aug 9 11:26:21 cosimo-desktop kernel: [8778506.500709] Hardware name: MSI MS-7A71/Z270-A PRO (MS-7A71), BIOS 1.20 04/07/2017
Aug 9 11:26:21 cosimo-desktop kernel: [8778506.500710] Call Trace:
Aug 9 11:26:21 cosimo-desktop kernel: [8778506.500714] dump_stack+0x6d/0x8b
Aug 9 11:26:21 cosimo-desktop kernel: [8778506.500716] warn_alloc+0xfe/0x160
Aug 9 11:26:21 cosimo-desktop kernel: [8778506.500718] __alloc_pages_slowpath+0xe19/0xe50
Aug 9 11:26:21 cosimo-desktop kernel: [8778506.500900] ? _nv032044rm+0x1e/0x30 [nvidia]
Aug 9 11:26:21 cosimo-desktop kernel: [8778506.501066] ? os_release_spinlock+0x1a/0x20 [nvidia]
Aug 9 11:26:21 cosimo-desktop kernel: [8778506.501
@cosimo
cosimo / disable_cb_access_scanner.sh
Created June 24, 2021 13:24
Disable the Couchbase Bucket Access Scanner to avoid micro outages
#!/bin/bash
#
# Disables the Couchbase access scanner on a list of buckets
# Access scanner can cause short outages when buckets are very large.
#
set -e -x
USER='Administrator'
@cosimo
cosimo / inv.py
Last active October 1, 2021 10:19
Display ansible inventories with Python and the rich console library
"""
Display Ansible inventories as a tree of environments, groups and hosts as leaves.
A nice diversion/excuse to dive into the rich console library.
It will expand simple host ranges, allowing grep commands to find
group names for given hosts.
Usage:
./inv.py
./inv.py | grep -B10 some-hostname
@cosimo
cosimo / cloudpassage_zone_update.py
Last active February 25, 2021 08:33
Automatic update of a Cloudpassage FirewallZone (python script)
#!/usr/bin/env python
# encoding: utf-8
"""
Update an existing Cloudpassage FirewallZone from an external list of IPs
Wanted to use this to block abusive IPs, then I made this work and
realized it only accepts max 6000 characters, which in practice translates
to ~400 IP addresses, so it's probably not worth using in any case.
Usage: