Inspirace: Automatizujte svoji práci na macOS pomocí AppleScriptu

Inspirace: Automatizujte svoji práci na macOS pomocí AppleScriptu

Možná i vy jste už někdy chtěli automatizovat nějakou činnost, kterou denně děláte na Macu – spouštění aplikací, přihlašování na webové stránky, spouštění skriptů atd. Ruční opakování těchto úkonů zabere spoustu času. Naštěstí v macOS existuje nástroj na automatizaci AppleScript. V tomto článku se podíváme, jak jsem pomocí chatu GPT automatizoval proces spouštění virtuálního stroje (VM) na Azure a připojení přes Microsoft Remote Desktop. Ukážu vám postup, jak jsem to udělal já, abyste si mohli podobnou automatizaci nastavit také.

Prompty s ChatGPT

Nejprve jsem si promyslel, co přesně chci automatizovat. Šlo o tyto kroky:

  1. Přihlásit se na portál Azure
  2. Spustit virtuální stroj
  3. Spustit Microsoft Remote Desktop
  4. Připojit se k virtuálnímu stroji

Potom jsem zadal GPT dotaz, jak by takovou automatizaci realizoval na macOS. Dostal jsem podrobný návod, že je potřeba použít kombinaci Azure příkazů (Azure CLI) v macOS terminálu pro ovládání Azure, následně AppleScriptu pro spuštění aplikací a bash skriptů pro spojení obou světů dohromady.

Azure příkazy pro spuštění VM

Nejprve bylo potřeba nainstalovat Azure CLI a následně se lognout do MS accountu.

brew update && brew install azure-cli
az login

Následně jsem vytvořil bash skript (pomocí GPT), který kontroluje stav virtuálního stroje a v případě potřeby ho spustí:

#!/bin/bash

resourceGroup="myResourceGroup"
vmName="myVM"

vmState=$(az vm get-instance-view --name $vmName --resource-group $resourceGroup --query instanceView.statuses[1] --output tsv)

if [ $vmState == "VM running" ]; then
  echo "VM už běží"
else
  echo "Spouštím VM..."
  az vm start --name $vmName --resource-group $resourceGroup 
fi

AppleScript pro spuštění Remote Desktopu

Dále následuje druhý krok, který spustí samotnou aplikaci MS Remote Desktop. Tento krok již probíhá na mém desktopu. Pro otevření aplikace Microsoft Remote Desktop a automatické připojení k virtuálnímu stroji jsem použil AppleScript:

tell application "System Events"
	if not (exists (process "Microsoft Remote Desktop")) then
		tell application "Microsoft Remote Desktop"
			activate
		end tell
		delay 5 -- Čekání na načtení aplikace
	else
		tell application "Microsoft Remote Desktop"
			activate
		end tell
	end if
end tell

delay 3 -- Čekání na načtení aplikace, možná bude potřeba upravit dobu

-- Provedení dvojkliku na souřadnicích {X, Y} pomocí cliclick
do shell script "PATH TO INSERT dc:X,Y"

delay 2 -- Čekání na otevření přihlašovacího dialogu

tell application "System Events"
-- Vložení přihlašovacích údajů...
end tell

Tento skript otevře aplikaci, stiskne klávesy pro připojení k novému připojení, zadá přihlašovací údaje a připojí se. Problém jsem měl zejména s doubleclickem na PC okno. Vyřešil jsem to přes https://pypi.org/project/clickclick/ , který tuto akci umožňuje (nenašel jsem pro AppleScript doubleclick action).

Spojení obou skriptů dohromady

Nakonec stačilo vytvořit bash skript, který postupně spustí oba tyto skripty. Nejprve se spustí virtuální stroj, počká se 15 sekund, než úplně naběhne, a pak se spustí Remote Desktop pro připojení.

#!/bin/bash

# Spustit Azure VM
cd /Users/stanislavbruch/Documents/Python/VM-automation
chmod +x start-vm.sh
./start-vm.sh

# Počkat, až VM naběhne
sleep 15

# Spustit Microsoft Remote Desktop apple script
osascript start-rdp.scpt

Tímto způsobem se mi povedlo plně automatizovat celý proces přihlášení na vzdálený počítač. Stačí spustit jeden skript a vše proběhne automaticky.

Secret tip na závěr

Abych nemusel lézt pokaždé do terminálu jako správný ajťák, pomocí appky Automator (nativně nainstalovaná na macOS) jsem si vytvořil aplikaci, která mi skript spouští tak, jak potřebuji.

Závěr

Doufám, že to neznělo tak složitě, jak to možná vypadá. Pokud ale jsou procesy, které se dějí opakovaně, je super si zkusit věci zautomatizovat a ulehčit si život. Podobným způsobem můžete automatizovat spoustu dalších věcí – spouštění aplikací, vyplňování formulářů, odesílání emailů atd. Stačí si promyslet jednotlivé kroky vaší rutiny a ChatGPT vám poradí, jak je automatizovat. Automatizaci zdar:)