Skip to content

Instantly share code, notes, and snippets.

View Sam-Martin's full-sized avatar

Sam Martin Sam-Martin

View GitHub Profile
@Sam-Martin
Sam-Martin / Clear-JenkinsBuildHistory.ps1
Created July 4, 2017 09:48
Clean up Jenkins Build history
$BuildDirs = gci "W:\Jenkins\jobs\" -recurse -filter builds | ?{$_.psiscontainer}
$BuildDirs | %{
$Builds = $_ | gci | select *,@{L="NameInt";e={[int]$_.name}} | ?{$_.nameint}| sort nameint -Descending
if($builds.Length -gt 30){
$Builds[30..$($builds.length-1)].fullname | Remove-Item -Force -Recurse -verbose
}else{
$Builds.Length
}
}
@Sam-Martin
Sam-Martin / Sams_datadog_sensors.py
Last active November 23, 2017 00:41
Sam's Server's Datadog Sensors
from subprocess import check_output
from datadog import statsd
from datadog.api.constants import CheckStatus
import requests
import re
zpool_status = check_output(["/sbin/zpool", "status"])
pattern = re.compile('state: ONLINE')
@Sam-Martin
Sam-Martin / datadog_zpool_status_check.py
Last active June 11, 2017 09:11
DataDog zpool status check
from subprocess import check_output
from datadog import statsd
from datadog.api.constants import CheckStatus
import re
zpool_status = check_output(["/sbin/zpool", "status"])
pattern = re.compile('state: ONLINE')
if pattern.search(zpool_status) :
@Sam-Martin
Sam-Martin / Install-AmazonSSMAgent.ps1
Last active August 27, 2018 20:26
Install AmazonSSM Agent Silently on Windows
Add-Type -AssemblyName System.IO.Compression.FileSystem
function Unzip
{
param([string]$zipfile, [string]$outpath)
[System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
}
Invoke-WebRequest -Uri https://s3.amazonaws.com/ec2-downloads-windows/EC2Config/EC2Install.zip -UseBasicParsing -OutFile "$env:temp\EC2Install.zip"
@Sam-Martin
Sam-Martin / Update-RadarrQualitiesToBluRay.ps1
Created May 21, 2017 11:04
Update Radarr Qualities from HDTV to BluRay
$Uri = "http://192.168.1.1:7878/api/"
$headers = @{
'x-api-key' = ""
}
$Movies = Invoke-RestMethod -Uri "$Uri/movie" -Headers $headers -Method Get
$KnownQualities = $Movies.MovieFile.quality.quality | select -Unique id,name
@Sam-Martin
Sam-Martin / Get-AWSAccountLimits.ps1
Created March 16, 2017 17:50
Get AWS Account Limits
function Get-AWSAccountLimits {
param(
$region
)
$ASGAccountLimits = Get-ASAccountLimits -region $region
$MaxNumberOfAutoScalingGroups = @{
AccountQuotaName="MaxNumberOfAutoScalingGroups";
Max=$ASGAccountLimits.MaxNumberOfAutoScalingGroups;
Used=$ASGAccountLimits.NumberOfAutoScalingGroups
}
@Sam-Martin
Sam-Martin / New-EphemeraSecret
Last active March 1, 2017 11:10
Upload Secret to Ephemera
function New-EphemeraSecret{
param(
[string]$Secret,
[string]$EphemeraURl = "http://ephemera.sdlsecuritycentre.com"
)
$EphemeraConfig = Invoke-WebRequest -Uri "$EphemeraURL/js/frontend_config.js" -UseBasicParsing
$EphemeraConfig.Content -match "apiURL = '(.+?)';" | Out-Null
$EphemeraAPIURL = $Matches[1]
$Payload = @{secretText = $Secret} | ConvertTo-Json
@Sam-Martin
Sam-Martin / Update-Zabbix-Triggers.ps1
Last active April 11, 2018 15:32
Update Triggers via Zabbix API using search example
if(!$creds){
$creds = get-credential
}
$url = "http://zabbix.example.com"
$payload = @{
jsonrpc = "2.0"
method = "user.login"
params = @{
user = $creds.UserName
@Sam-Martin
Sam-Martin / Discovery Rules.md
Last active December 16, 2016 14:40
Zabbix Website Checks Windows

Item: url.statuscode[{#DESCRIPTION}] Trigger: {Template App IIS - Site Checks:url.statuscode[{#DESCRIPTION}].last()}<>{#RESPONSE}

@Sam-Martin
Sam-Martin / this-is-not-a-one-liner.ps1
Last active December 13, 2016 10:40
Establish BIND records' resolvability
$zone = gc .\fmlocal.zone | ?{$_ -notmatch '(^;|^-|^\s*$|^@|^\$|^\s+)'} | %{$val = $_ -split '\s+'; new-object psobject -Property @{"Name"=$val[0];"Value"=$val[3] }}
foreach($record in $zone) {
$nslookup = $(nslookup "$($record.name).fmlocal" 2>&1 | out-string)
$matches = @();
$nslookup -match '(?smi)(?<Name>Name:.*)(Address:\s*)(?<Address>[0-9\.]*)' | Out-Null
if(!$matches){
$record | select *,@{L="Resolvable";E={$false}}, @{L="Resolved Address";E={$null}}
}else{
$record | select *,@{L="Resolvable";E={$true}}, @{L="Resolved Address";E={$Matches.Address}}