Skip to content

Instantly share code, notes, and snippets.

View sandipb's full-sized avatar

Sandip Bhattacharya sandipb

View GitHub Profile
@sandipb
sandipb / expand_short_url.py
Created February 29, 2024 16:07
Python script to pipe text with short urls and have it expand short urls in it
import re
import sys
import requests
def expand_url(match):
short_url = match.group(0)
response = requests.head(short_url, allow_redirects=False)
if response.status_code in (301, 302):
return response.headers["location"]
@sandipb
sandipb / README.md
Last active January 20, 2024 22:40
Avro schema for weather data
@sandipb
sandipb / code_remote.sh
Created January 17, 2024 14:19
Bash function to use the vs code cli in remote ssh extension
code_remote ()
{
local remote_node_path=$VSCODE_GIT_ASKPASS_NODE;
if [ -z "$remote_node_path" ]; then
echo "VSCODE_GIT_ASKPASS_NODE is not set. Cannot determine path to remote-cli";
return 1;
fi;
local remote_cli_path=$(dirname $remote_node_path)/bin/remote-cli/code;
if [ ! -f "$remote_cli_path" ]; then
echo "Remote CLI not found at $remote_cli_path";
export GCLOUD_TUNNEL_PID=/tmp/gcloud-tunnel-pid
function proxy_bastion() {
local BASTION_HOST="bastion-instance"
local GCP_ZONE="us-east4-a"
[[ -f $GCLOUD_TUNNEL_PID ]] && echo "File $GCLOUD_TUNNEL_PID exists. A previous tunnel might be active. Aborting." && return
set -x
gcloud compute ssh $BASTION_HOST --zone=$GCP_ZONE --verbosity=warning --tunnel-through-iap --ssh-flag='-D1080 -N' &
#!/usr/bin/env bash
EXTENSIONS=(
# General
ms-vscode-remote.vscode-remote-extensionpack
ms-vscode-remote.remote-ssh
stkb.rewrap
tomsaunders-code.workspace-explorer
# Golang
golang.go
@sandipb
sandipb / decrypt_pdf.sh
Created May 10, 2023 21:25
Script to decrypt PDFs using qpdf. Will ask for password only if needed.
#!/bin/bash
set -e -o pipefail
usage() {
cat <<HELP
USAGE: $0 PDF_FILE [OUTPUT_DIR|OUTPUT_FILE]
Decrypts given pdf file usingh qpdf by prompting for a password.
@sandipb
sandipb / route.sh
Created April 22, 2023 06:58
How to enable a linux host to route between two lans
#!/bin/bash
# $PRIVATE_IF is private lan, $PUBLIC_IF is public lan
# the interface which is connected to the interface.
# The default route of this host is already set via this interface
PUBLIC_IF=enp1s0
# The interface connecting to the internal lan, which needs this host to be a router to the Internet
PRIVATE_IF=enp2s0
@sandipb
sandipb / create new django project.sh-session
Last active March 13, 2023 17:52
Creating new django project
$ mkdir dtemp
$ cd dtemp
$ poetry init
This command will guide you through creating your pyproject.toml config.
Package name [dtemp]: Django Test
@sandipb
sandipb / age_sorted_names.pp
Created July 20, 2022 13:31
Puppet sort hash
$data = [
{'name'=> 'emily', 'age'=> 6},
{'name'=> 'john', 'age'=> 5},
{'name'=> 'jade', 'age'=> 4},
{'name'=> 'grant', 'age'=> 2},
]
function age_sorted_names($ar) >> Array {
$ar.map |$idx, $entry| {
[$entry['age'], $entry['name']]
@sandipb
sandipb / README.md
Last active May 5, 2022 02:46
Fix cups-pdf not printing PDFs with restrictions

Fix problem when cups-pdf (actually Ghostscript) refuses to print PDF files with restrictions

Specifically, even if the file has no printing restrictions, like many government forms do (my specific itch), Ghostscript refuses to print the file and generates a blank pdf.

Steps to fix

  1. Put contents of unblockprint.sh in an executable file named /usr/lib/cups/filter/unblockprint. Make sure that the permissions of this file matches others in the same directory.
  2. Put local.convs in /etc/cups