Virtualization, Cloud, Infrastructure and all that stuff in-between

My ramblings on the stuff that holds it all together

Paste multi-line shell commands via SSH session

On occasion I have a bunch of commands to run inside a Linux VM over an SSH session from my Mac terminal (Zsh)

It’s tricky to get a variety of commands to reliably execute sequentially – some seem to trip over each other depending on how they handle i/o and this is a problem if you have something that is dependent on the previous command being completed.

Yes, I could copy the script to the server, chmod and run as a .sh bash script, use a proper CD toolchain etc. but I’m lazy and used to doing it this way from my Cisco days plus it also avoids leaving debug scripts on servers you’re working with ūüôā

I’m sure there is a better way to do this, but I find this works really well.

SSH to your chosen Linux server

When you’re ready to go type an open brace “(”

Paste your command in

then close the brace “)”

and hit Enter.. and off you go all commands are executed sequentially and one by one.

Why has my Amazon Alexa device stopped announcing when people press my Ring doorbell?

If you have a Ring doorbell and have it ‘paired’ with Alexa so that when someone presses the doorbell it announces ‘there is someone at the front door” (or whatever) and it has stopped doing-so it may be that someone* has set your Echo device to ‘do not disturb’.

In the Alexa app you can change it by tapping the moon icon to turn it off

*in my case I did it to stop kids using ‘drop-in’ to the Echo device that runs music in my office to demand snacks or complain about the WiFi, but then forgot about it.

List all Azure Regions from CLI

Useful command, parked here for next time I forget how

 az account list-locations --output table 

Also possible to output as JSON etc, by adjusting the --output parameter

How to export ALL your Amazon orders to Excel

I’ve been a long-time Amazon customer, but I’m also a bit of a nerd, and for ages I’ve been trying to figure out (quantify!) how much I’ve ordered from the big shop of everything since I placed my first order in 2002.

If you’re an Amazon.COM (e.g. US site) customer this seems fairly well catered for, and there is a page here that seemingly allows you to do this here – but if, like myself you’re an customer this doesn’t work – it can only export all the data of things you’ve purchased from the US site, which in my case is a handful of items), not the warehouse of things that have come through our front door over the years.

There is a handy Chrome extension which works really well, but you have to do it 1 year at a time and because its scraping the site on your behalf seems to occasionally trip some logic in Amazon to buffer your requests and re-authenicate you – which isn’t a bad thing.

So, the only solution I found is to request a full export of all your Amazon data using the link they provide

Impatient people be warned, this takes a couple of days to complete!

A couple of days later I got an email from Amazon with a link to download a .zip file, I’m sure this will vary based on how you order – but in my case there were a number of sub folders including a folder called Retail.OrderHistory.2 with a a large .CSV file (hint: if you’ve ordered a lot, or been a long time customer – look for the largest CSV file(s)). This file contained data in the following format – you can validate what it was based on the “Product Name” field.

Website Order ID Order Date Purchase Order Number Currency Unit Price Unit Price Tax Shipping Charge Total Discounts Total Owed Shipment Item Subtotal Shipment Item Subtotal Tax ASIN Product Condition Quantity Payment Instrument Type Order Status Shipment Status Ship Date Shipping Option Shipping Address Billing Address Carrier Name & Tracking Number Product Name Gift Message Gift Sender Name Gift Recipient Contact Details

And hurrah, I was able to total the “Total Owed” column and duly fell off my chair as to how much I’ve spent!

With a bit of massaging (hint: split out* columns to drop time off the “order date” field, put into a pivot table at ta-da.. this is how many items per day, for the last 20-ish years I’ve purchased from (oldest on the left).

I hope that helps someone else similarly outside of the US!

*I’m sure there is a better way to do this in Excel.. but it was quick & dirty

Standing down from UK and London VMUG

I’ve been a VMUG leader for the last 10+ years and it’s been a great experience, I hope you’ve all enjoyed the content the team and I have put on.

However, as announced earlier I’m moving on to a new role and joining Microsoft working on Azure Confidential Compute so I’ll be handing over the chairman role of the UK & London User Groups.

David, Chris, Linda and Gareth will be announcing my successor in due-course.

I’d like to say a heartfelt thanks to the team and all of our attendees over the 10 years as a leader (and the 5 years before that when I was an attendee), I still maintain that user groups (regardless of the technology or vendor) are the best way to learn from your peers, VMUG offers an excellent network of professionals who are open and always willing to help.

I’ll still be blogging here as and when I can.

London and UK VMUG Sessions – The Album

We (The UK/London VMUG team) have a massive archive of recording from the last 7 or so years of UKVMUG (and more recently London) VMware User Group events, this is community event run by volunteers and I’m pleased to say we work very hard to keep the agenda clear of sales pitches and keep the focus on interesting and relevant content. As a result we’ve built up a pretty large archive of material.

During the various COVID Lockdowns we held our usual meetings over Zoom and the side-benefit of this is we have all the sessions recorded (via Zoom and our super-star AV tech Gareth Edwards) rather than just a select few.

Whilst the version numbers and products in the oldest recordings have aged we always tried to have a closing keynote that was a less product specific and more personal/industry skills focused (or even about space exploration!) – you can find the full selection of videos at

The following is a list of our closing keynotes

Chis Wahl – (2014) Stop being a minesweeper

John Troyer (2015) TechReckoning – Architecting Your Career

Julian Wood (2016) Demystifying the Future of IT a Practitioners Guide

Chris McCain (2017) Clouds Collide, Lightning Strikes

Duncan Epping (2018) (r)Evolution of Infrastructure

Prof. Anu Ojha OBE (2019) Space, So What?

Duncan Epping (2020) There is no Growth in the comfort Zone, there is no comfort in the learning Zone

(2020-21) were on an external events platform, will see if I can get the videos imported to YouTube

Other notable mentions:

Katherine Skilling (2020) – Finding my Way, Who am I and what can I offer?

Presentation Skills (2021) – Kev Johnson / Gareth Edwards

Joe Baguley has provided an opening keynote for all our meetings and is what I think a good presenter should be, engaging, surprisingly accurate and obsessed with chickens

2014 CTO Rant-as-a-Service

2015 Containers, Microservices, Turtles, Chickens and other Animals

2016 Digital, Apps & other Buzzwords

2017 Modernising the centre ready for the edge

2018 VMware Strategy Update

2019 VMware Office of the CTO 2020 Outlook and Beyond

(2020-21) were on an external events platform, will see if I can get the videos imported to YouTube

If you’re interested in attending one of our future events keep an eye on and https://vmug/usercon

What I use

Thought it may be useful to add a post showing what I use daily.

Office, work from home place – Fancy office shed at the end of my garden, fully insulated & double glazed 5m x 5m with concrete base (important – lots of foxes where I live) – I built my Global ShedQuarters about 10yrs ago (well, paid someone to build it) and it’s really paid off for my own domestic sanity having a separate work/live space.)

I share it with my wife and whilst the schools were shut during COVID we also had 2 kids in the office – so we all have our own desks if required

The office is cabled to the house using some armoured cable for power and ethernet (4 x 1GbE – trunked to 3GbE.. well, because I could rather than any actual need.. and 1GbE as direct patch to HP c7000 chassis OA in the garage – blades mainly off unless serious lab work – but use a pair of Cisco 3020 blade switches to do L3 routing for the house.

2 x IKEA FLOALT light panels with remotes, hooked into Alexa – great especially during winter as daylight at the end of the garden is scarce

Herman Miller Aeron Size B chair with (extortionately priced) headrest from Amazon – brilliant chair, I got it 2nd hand about 15yrs ago and it still works perfectly – upgraded recently with rollerblade type wheels (still not sure about those – bit too easy to go flying across the office).

Desk – Ikea BEKANT sit/stand motorised desk – got used to having a sit/stand desk at work and it was a great COVID purchase – ensuring I get some motion during the day

Whiteboard(s) – I have 4 – you can never have too many – generic AmazonBasics brand ones, magnetic – lots of magnets (do not let your children “accidentally” eat them…! 1 x scary A&E experience

Thinking chair – IKEA POANG with leather cushion – brilliant for not staring at a screen.
Book shelves, office furniture – IKEA (see a pattern here?) mostly 2nd hand from eBay or Facebook marketplace for pennies.


Bit of a Lego nerd and display space has overspilled from the house to the office – including an emergency drawer full of random Lego, you know… for those long conference calls

Internet service

I’m luckily in that I can get Virgin Media cable and it’s periodically upgraded – I’ve currently got a 200mbps service with 10mb upstream – the download is way more than I really need, but it’s always “sign for another 12 months and we’ll upgrade your speed”, I’ve had it for 8 or 9 years and it’s been really stable… apart from that time their installers cut through my cable in the cab to connect a new customer… and then it was out for 3 weeks and took a lot of shouting to get it back.

I use their “Super”hub in modem mode and use my own WiFi (UniFi) and UniFi USG 3P as the firewall and it’s pretty solid.

I have a TP-Link 4G router with an Ethernet connection as backup with a PAYG SIM if there is big outage, although – word of warning if you have kids with a Playstation your PAYG data allowance won’t last long as I discovered during the great cable cut incident of 2018


42U Rack with glass doors – got years ago for free from local paper (that shows how long ago it was!)

Office networking is all Cisco – 24 port PoE – pretty quiet

HP ML110 G7 running vSphere for all my normal VMs – small and quiet

IOMega PX-7 NAS – NFS storage for VMs

Unifi UAP-AC-Lite rest of house (non-work side) is using UniFi / USG equipment – can’t fault it

2 old monitors on the wall running from an old HP thin client which just about runs Windows 10 – CCTV monitor and streaming news – currently switch between Sky & BBC News channels using their VOD services

Primary display – Apple Thunderbolt 27″ screen – pretty old but still holds its own – USB-C adapter to laptop – and provides USB for my desk and wired Ethernet (please, if you spend all day on Teams, Skype etc. _WIRE_ a connection – don’t rely on wireless

Secondary display Lenovo 27″ over DisplayPort->USB-C to laptop

My layout is usually

Primary display: work VDI

Secondary display: general web browsing, gping running in a terminal to keep an eye on network latency during calls, CPU history/load

Mac display: personal email – Office365 running in a web browser

Both monitors on arms clamped to desk (especially important with a sit/stand desk as you don’t want to knock one off!

Laptop – recently upgraded an old MBP to a new M1 MacBook Pro 14″ with M1 Pro chipset, 8Gb RAM, 1TB SSD – can’t fault it – still really like the Apple virtual desktop / swipe setup which makes it easy to switch between my day job VDI and other remote sessions and browsers using a swipe

Apple Magic Mouse – it’s expensive but worth it for the swipe feature + virtual desktops

Cheap-ish Mac bluetooth keyboard – starting to annoy me, but it does pair with 3 devices which is handy

Day job involves using a VDI – once

Primary Browser – Chrome – despite the fact it eats a lot of resource I continue to use it, maybe more out of habit than desire

Edge for some personal Office365/Azure dev/test tenants I have (mainly seperate browser running InPrivate so I can keep ID separate from my main logged on OS

Linux terminal – OhMyZSH – brilliant

Files an storage paid-for Dropbox, but thinking about moving it to OneDrive in my Office365 tenant as the price is increasing pretty sharply and features are pretty much at parity for most of what I use, I keep everything in dropbox with smart sync (probably didn’t need a laptop with such a big drive in hindsight)

Microsoft RDP client for access to several Windows machines I use in my lab

Webcam Logitech C920 – seems to work well, if my MacBookPro were positioned better on my desk I’d use its webcam instead.

Plantronics W720 dual can DECT headset over USB – a bit long in the tooth but works faultlessly – friends don’t let friends use bluetooth headsets, DECT everytime – works a fair way up the garden if I need to stretch my legs on a call

Jabra Speak 710 wired with USB – really good for hands-free usage when my wife isn’t in the office

Backup Lenovo Thinkpas W530 – beast of a laptop with 32Gb RAM and actual real ethernet and VGA ports running (just) Windows 10/11 Insider builds – not used that much but handy to have a round

Cloud Services

Office365 primary email and collab
Azure – several tenants for personal use – script to kill off and delete resources in my ‘experiments’ resource group to avoid me forgetting about them and ramping up a large bill

Home Lab

I still have and use my lab at home – for day to day running my ML110 G7 runs most of the management pod, vCenter and general house VMs. I have an HP7000 in the garage with some chunkly 128GB blades running vSphere and Hyper-V (sometimes virtualised StackHCI) that get spun up when the need arises, blades are usually off as they suck quite a lot of power.

c7000 chassis with 2 Onboard Administrators and 2 Cisco 3020 switches averages just under 300W and does all my core routing – the OAs are waaaay out of support now so sometimes its a bit of a struggle to find a VM/laptop with Internet Exploder and an old version of ActiveX to be able to run the remote iLo console reliably so I have a VM on stand-by on the ML110 to do-so.

Gmail calendar – shared family stuff


I like my music, and sometimes I like it err, loud – which is handy as my office isn’t really near anyone else so I can usually be as antisocial as I like.

most music comes from Spotify via an Alexa Echo plugged in via an Aux cable (yes, I know.. the horror! – just need something convenient with an optical) nothing too fancy in HiFi terms (sold all my really good stuff long ago but all good 2nd hand bargains)

NAD 310 Amplifier

Marantz DV4100 DVD player for those spinny silver things that we all used to use

Wall mounted Mission LX-2 speakers. I used to have some really loud floorstanding speakers but they took up too much space and didn’t really fit the room when it got busy during COVID, these aren’t bad speakers at-all – sometimes depends on how well mixed the source is.

Hope you found it useful/interesting…

Allow ICMP Ping through Windows firewall from command line

Leaving this here for the next time I can’t remember how to do it.. Windows by default ships with the firewall slammed shut (and rightly-so) however if you can’t easily see the console of the machine like if it’s in Azure sometimes it’s hard to figure out when it’s up and ready to go – I have a jump box in Azure that I power-up when I need it.

so, to do-so you need to run this command once the first time you use it then, ICMP (Ping) will be allowed for evermore

netsh advfirewall firewall add rule name="Allow ICMP Ping" protocol=icmpv4:8,any dir=in action=allow

*note 2/5/23 – fixed typo in command to change from block to allow!!

RBAC required for Granting JIT access to an Azure VM for a standard user

Azure JIT is a great feature for temporary access to Jump boxes that I use in my home lab – Bastion is better, but I’ve not got as far as setting that up because of some constraints on the networks I created.

I like JIT via the Azure portal as it gives you a quick & dirty way to ensure there is MFA (as long as your AAD account is MFA-enabled to access the Azure portal) behind setting up an RDP request to the jump box (and limited by source port and the firewall rule automatically revoked afterwards by JIT) without having to setup brokers, 2FA sources, more complex security arrangements.

I recently had to share one of these machines with someone else in my AAD org, but despite having reader roles at the Azure subscription they got an error when invoking the JIT role or asking for it by leaving your RDP ports open to the entire Internet – note if you’re making the connection on a shared network behind a NAT like a corporate LAN or university everyone else behind that NAT will also get RDP access to this server; so you still need good password-level authentication to the jump box.

So, a custom RBAC assignment was required (it works ok for owners/contributors at the subscription level).

This Microsoft GitHub page has discussion of the roles required (last post where the case is closed) so I had to create a custom role as shown below, note the Microsoft.Network/*/read permission didn’t exist when I tried it, but as my user has reader at the subscription anyway this wasn’t required for me – So your mileage may vary.

Or, if you prefer the JSON


    "properties": {

        "roleName": "VINF_NET-Request-JIT-Access",

        "description": "custom role required for non-global admins to invoke JIT",

        "assignableScopes": [



        "permissions": [


                "actions": [






                "notActions": [],

                "dataActions": [],

                "notDataActions": []






Hope that helps


POSH1Liner – Add sequential DNS A records

When setting up a new environment you often need to create a bunch of sequential DNS A records, with reverse look up PTR records.

For example, I do this in my home lab – this 1-liner creates hosts 1..16.

You can adjust the server naming convention by editing the $name variable to suit and editing the -ZoneName parameter to match your environment.

Likewise, you can adjust to fit your IP addressing schema by editing the $ip variable/

To start at a different number (mine start from 1), adjust the $num = 1 statement.

for ($num =1; $num -le 16; $num++) { $name="L1-slot" + $num ; $ip = "172.16.10." +$num ; Add-DnsServerResourceRecordA -Name $name -ZoneName "" -AllowUpdateAny -IPv4Address $ip -CreatePTR ; }


In my example I’m running this on my lab Windows DC/DNS server (home lab, not production!), if you’re doing it from a different server you can add a -ComputerName “yourDNSserver.local” parameter to point it at your DNS server.

Note the use of the semi-colon ; to pass multiple PowerShell commands on a single line making it easier to cut & paste this command.

If you’re doing this ‘for real’ outside your own lab you can also use the -WhatIf parameter to see what would happen.

Blogged here for the next time I need to do this!