Skip to content

Instantly share code, notes, and snippets.

View peterwwillis's full-sized avatar

Peter W peterwwillis

View GitHub Profile
#!/bin/bash
# Export your bookmarks into a bookmarks.html file and pass it to this script
BOOKMARKS_FILE="$1"
wget -v --tries=1 --convert-links --adjust-extension --page-requisites --no-parent --timestamping --no-remove-listing --no-clobber --force-html -i "$BOOKMARKS_FILE" 2>&1 | tee -a wget-mirror-bookmarks.log
#!/bin/sh
# Exports your bookmarks.html and converts them to a simple text file, one URL per line
BOOKMARKS_FILE="$1"
cat "$BOOKMARKS_FILE" | grep HREF | sed -e 's/^.*HREF="\([^"]*\)".*$/\1/ig' | grep -i ^http | sort -u > httrack-bookmarks.txt
# Get all bookmarks with httrack.
# NOTE: this disables all of httrack's "safety features"
httrack -O foo -i -iC2 -c20 -%c200 -%! -r1 -n -%k -%L httrack-bookmarks.txt
@peterwwillis
peterwwillis / get_all_gitlab_repos.sh
Created April 2, 2019 14:49
Get all GitLab repositories using the GitLab API
#!/usr/bin/env bash
# Get all GitLab repositories from the GitLab API.
GITLAB_HOST="https://gitlab.com"
export TOKEN=$(cat ~/.gitlab-token)
API_VER="v4"
PER_PAGE=100
set -eo pipefail
@peterwwillis
peterwwillis / sample.sh
Created May 8, 2019 14:27
Changing linux terminal screen window and tab titles
echo -ne "\033]0;This changes the window title\007"
echo -ne "\ekThis changes the tab title\e\\"
@peterwwillis
peterwwillis / download-tls-cert.sh
Created May 29, 2019 17:02
Download a TLS certificate
#!/bin/sh
set -e
_get_cert () {
openssl s_client -showcerts -connect "$1":"$2" </dev/null 2>/dev/null | openssl x509 -outform PEM
}
if [ $# -lt 2 ] ; then
echo "Usage: $0 HOST PORT [OUTFILE]"
echo ""
echo "Connects to TCP PORT on HOST and downloads TLS certificates."
echo "Saves to OUTFILE if it is specified, otherwise outputs to standard out."
@peterwwillis
peterwwillis / extract_jenkins_credentials.groovy
Last active November 27, 2019 17:12
If you can't find a Jenkins credential's value any other way, use the Script Console to extract the values
// To support more types of credentials, look up the credentials plugin code and write
// additional groovy to parse those credential types.
//
// From Mohamed Saeed: https://medium.com/@eng.mohamed.m.saeed/show-all-credentials-value-in-jenkins-using-script-console-83784e95b857
def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class,
Jenkins.instance,
null,
null
@peterwwillis
peterwwillis / using-unix-pass.md
Created December 3, 2019 21:59
Using the Unix tool `pass` to manage passwords

About

This document explains how to use the Unix tool pass to manage passwords.

Using pass

Initial set-up

  1. Install software
// from https://stackoverflow.com/questions/9815273/how-to-get-a-list-of-installed-jenkins-plugins-with-name-and-version-pair#12730830
// the sort version doesn't seem to work on my jenkins install
Jenkins.instance.pluginManager.plugins.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
@peterwwillis
peterwwillis / Docker cheat sheet.md
Last active February 14, 2020 05:02
Docker cheat sheet

Run commands

Use Docker to build a Jenkins plugin

  1. Check out a Jenkins plugin from GitHub
    $ git clone git@github.com:jenkinsci/configuration-as-code-secret-ssm-plugin.git
    $ cd configuration-as-code-secret-ssm-plugin
  2. Build the plugin. Change the maven tag to something like 3-jdk-8 or 3-jdk-11 if you run into errors, as some plugins only build with one JDK version.
    • Run as a non-root user
@peterwwillis
peterwwillis / cp_src_dir_symlink_weirdness.md
Created July 21, 2020 14:27
Copying a source directory into a symlinked target directory