Skip to content

Instantly share code, notes, and snippets.

View rothwerx's full-sized avatar

Jeremiah Roth rothwerx

View GitHub Profile
@rothwerx
rothwerx / gist:10440939
Created April 11, 2014 04:31
Python: Raspberry Pi: Read photocell values and graph with Graphite. I used this with cron for determining the best place to grow tomatoes.
!/usr/bin/env python
import RPi.GPIO as GPIO
import datetime
import socket
import time
import os
metric_path = "sun.loc1"
@rothwerx
rothwerx / gist:c894bd8b08fee8ab1a53
Created December 14, 2014 03:34
Get the install date of a linux system
tune2fs -l /dev/sda1 | awk -F" +" '/Filesystem created/ { print $2 }'
@rothwerx
rothwerx / gist:97c8c591be1021522b60
Created March 11, 2015 02:35
Bash: resample the lines of a multiline variable
function resample() {
sample_interval=$1
fh=$2
ctr=1
while read line; do
[[ $sample_interval -eq $ctr ]] && echo "$line" && ctr=0
((ctr++))
done < <(echo "$fh")
}
@rothwerx
rothwerx / gist:065fbdfd5eec6aa56e1f
Created March 18, 2015 22:15
C: Print the USER_HZ for a platform
/* CPU values in /proc/stat are measured in USER_HZ which is
generally 1/100th of a second, but you can verify with this.
See http://man7.org/linux/man-pages/man5/proc.5.html
*/
#include <unistd.h>
#include <stdio.h>
int main()
{
printf("USER_HZ is %d\n", sysconf(_SC_CLK_TCK));
@rothwerx
rothwerx / gist:b60f1fa7b543e8761b3c
Created July 13, 2015 21:42
Bash: Ensure processes run on allowed CPUs
#!/bin/bash
# function to expand the range of allowed CPUs
range_expand () (
IFS=,
set -- $1
n=$#
for element; do
if [[ $element =~ ^(-?[0-9]+)-(-?[0-9]+)$ ]]; then
set -- "$@" $(eval echo "{${BASH_REMATCH[1]}..${BASH_REMATCH[2]}}")
@rothwerx
rothwerx / gist:e1308d61512d7c278268
Created August 10, 2015 17:13
Bash: Collect HBA/HCA information for facter
#!/bin/bash
# Produce custom facts about HBA/HCA cards for facter
# This file should be executable in /etc/facter/facts.d/
# Look for Mellanox, Emulex, and QLogic cards
varq=$(lspci | awk '/[Mm]ellanox/ {
printf "mellanox=%s\n", $1 }
/[Ee]mulex/ {
printf "emulex=%s\n", $1 }
/[Qq][Ll]ogic/ {
@rothwerx
rothwerx / gist:7aa31f5437a4fc2b9416
Created October 21, 2015 16:24
Bash: Logging helper function
function pecho {
if [[ $LOGGING ]]; then
printf "$@" | tee -a some.log
else
printf "$@"
fi
}
pecho "%-10s %10s\n" "Logging:" "On"
@rothwerx
rothwerx / gist:f1843fe5e295f0c18d21
Created December 5, 2015 03:50
Python: YAML to JSON preprocessor
#!/usr/bin/env python
import yaml
import json
import sys
with open(sys.argv[2], "w") as outf, open(sys.argv[1]) as inf:
o = yaml.safe_load(inf)
json.dump(o, outf)
@rothwerx
rothwerx / zenoss_curl_examples.sh
Last active December 16, 2015 17:09 — forked from cluther/zenoss-shell-functions
Bash: CuRL Zenoss
#!/bin/sh
# Source this file
# Your Zenoss server settings.
ZENOSS_URL="http://localhost:8080"
ZENOSS_USERNAME="admin"
ZENOSS_PASSWORD="zenoss"
# Generic call to make Zenoss JSON API calls easier on the shell.
@rothwerx
rothwerx / gist:5470311
Created April 26, 2013 20:44
Perl: MongoDB update
sub update_mongodb {
if (!Opts::option_is_set('noupdate')) {
my $client = MongoDB::MongoClient->new(host => $mongohost, port => $mongoport);
my $database = $client->get_database( $mongodatabase );
my $db = $database->get_collection( $mongocollection );
my $mongohash = \%hosthash;
my $mongoresult = $db->update({ "hostname" => $hosthash{'hostname'} }, $mongohash, { "upsert" => 1} );
print $mongoresult;
}
}