Jamf Blog
Adult male with beard playing chess with a robot
March 21, 2023 op Armin Briegel

macOS scripting en zogenaamde artificial intelligence

Chatbots gebouwd met de nieuwe, krachtigere 'grote taalmodellen' lijken in ieders gedachten te zijn. De meest prominente is OpenAI's ChatGPT. Deze bots gebruiken statistische modellen om de volgende woorden in een zin te voorspellen en de resultaten zijn vaak verbluffend. Wat nog verbazingwekkender is, is dat deze techniek ook (meestal) bruikbare code kan genereren.

Communicatie tot stand brengen

Ik had de eerste golf van opwinding meestal genegeerd omdat ik het meestal druk genoeg heb met chatten en praten met echte mensen. Maar toen ik steeds meer mensen zag die de vaardigheid van ChatGPT in het uitleggen en zelfs aanleren van het schrijven van code prezen, moest ik het zelf zien.

Om eerlijk te zijn was dit niet het eerste contact dat ik had met deze nieuwe generatie artificial intelligence (AI). Mijn eerste? Een app die beweert gespecialiseerd te zijn in het schrijven van macOS bash scripts genaamd SudoSolverAI. Mijn ervaring met deze app was niet dat ik meteen overtuigd was van de nieuwe technologie, maar het heeft mijn nieuwsgierigheid genoeg gewekt om me aan te melden voor ChatGPT en het met dezelfde vragen te testen als bij de voormalige app die ik gebruikte ... alleen met zeer verschillende en meer intrigerende resultaten.

ChatGPT kan beheerders niet volledig vervangen, maar leer hoe je zelf beheerderscripts kunt maken.

Mijn ervaringen met ChatGPT

Wat het coderingsadvies van ChatGPT zo overtuigend maakt, is dat het niet alleen voorbeeldcode uitspuugt, maar ook uitlegt wat de code doet. In dit voorbeeld leverde de bot een script voor Linux, vanaf een eerdere prompt. Toen ik specifiek naar macOS vroeg, behield het de context en gaf het me een script voor macOS met uitleg over elke stap and hoe het te gebruiken, zoals in het onderstaande fragment.

 V: Werkt dit op macOS? A: Het script dat ik heb verstrekt is specifiek voor Linux en werkt mogelijk niet zoals verwacht op macOS. De reden is dat macOS een ander commando gebruikt om gebruikersgroepen en privileges te beheren dan Linux. In macOS is het commando om een gebruiker uit de beheerdergroep te verwijderen: sudo dseditgroup -o edit -d -t user admin Daarom zou een aangepast script voor macOS er als volgt uitzien: #!/bin/bash # Controleer of de gebruiker een beheerder is if ! id -Gn | grep -q 'admin'; then echo 'Je bent geen beheerder.' exit 1 fi # Verwijder de gebruiker uit de beheerdergroep sudo dseditgroup -o edit -d $(whoami) -t user admin echo 'Admin privileges removed for $(whoami)' Je kunt het script opslaan met een '.sh' extensie, uitvoerbaar maken met 'chmod +x remove-admin-privileges.sh', en uitvoeren met './remove-admin-privileges.sh' op macOS.

Dit script werkt wanneer je het uitvoert in Terminal, maar als je dit probeert uit te voeren als een beheerscript vanuit Jamf Pro, zou het mislukken. Het commando whoami geeft een antwoord als de gebruiker waaronder het proces draait, maar als het draait als onderdeel van een Jamf beleidsscript, is die 'gebruiker' root.

Toen ik ChatGPT met meer specifieke vragen tot een oplossing probeerde te bewegen, gaven de antwoorden wel mijn vragen weer, maar geen nieuwe informatie voor een goede oplossing. Ik liet ChatGPT rondjes lopen, draaiend tussen het aanbevelen van whomai, id -un, en de variabele $USER als 'verbeterde' oplossingen om de huidige ingelogde gebruiker terug te geven, ook al geven ze allemaal dezelfde waarde terug.

Note: voor degenen die de spanning niet kunnen verdragen, hier zijn twee veilige manieren om de momenteel ingelogde gebruiker op macOS te bepalen.

Berekent niet

Op de vraag hoe het script eruit zou zien als ik het met Jamf Pro wilde implementeren, kreeg ik gedetailleerde instructies over hoe ik een Jamf Pro-beleid moest maken met behulp van het gebrekkige script. Helaas waren de instructies verkeerd en kwamen ze niet overeen met de feitelijke workflow die nodig is om met succes een script toe te voegen aan een Jamf Pro-beleid.

Behalve de methode om de huidige gebruiker te bepalen, bevat het van ChatGPT ontvangen script nog een heel subtiele fout. De manier waarop dit script controleert of een gebruiker lid is van de beheerdersgroep zal ook fout-positief zijn voor gebruikers die lid zijn van de groep _lpadmin. Op macOS biedt het lidmaatschap van de groep _lpadmin de mogelijkheid om printers te beheren zonder dat daarvoor volledige beheerderprivileges nodig zijn. Dit is een oplossing die je waarschijnlijk alleen op beheerde Macs zult tegenkomen.

In dit script zou de fout alleen leiden tot een foutieve poging om de gebruiker uit de beheerdersgroep te verwijderen, wat zonder verdere schade zou mislukken. Maar als je die code hergebruikt in een andere context, kan dat onverwachte neveneffecten hebben en zelfs leiden tot veel slechtere resultaten.

Sommige gebruikers beweren dat om de beste informatie uit ChatGPT te halen, de prompts goed moeten worden geformuleerd. Zonder duidelijke aanwijzingen over wat precies goede promptformuleringen zijn, heeft deze vermeende vaardigheid door gebruikers online de benaming 'prompt engineer' gekregen. Als ik als programmeur speciale 'bezweringen' moet leren om met je taalmodel te communiceren, dan zou ik zeggen dat je AI faalt in zijn opzet om van zijn gebruikers te leren.

Ondanks de stijgende populariteit van Macs gebruiken de meeste mensen die shellscripts moeten schrijven geen macOS. Mac-gebruikers die shellscripts moeten schrijven, hebben die nodig voor andere taken dan het beheren van Macs. Slechts een deel van degenen die wel scripts nodig hebben om Macs te beheren zijn Jamf Pro-beheerders. De vaardigheid om Macs te beheren met Jamf Pro, pakketinstallatieprogramma's, profielen en scripts kan worden beschouwd als een niche binnen een niche binnen een niche.

Zoals hun naam al aangeeft, vertrouwen de grote taalmodellen die ChatGPT en zijn broers en zussen voeden op een grote hoeveelheid input, waardoor ze statistisch kunnen voorspellen welke woorden zinvol zijn in die context. Dat deze aanpak werkt voor zowel code als menselijke taal, is verbazingwekkend. Maar menselijke communicatie heeft veel redundantie en veerkracht ingebouwd.

Computercode niet.

Informatie ≠ feiten

Neem bijvoorbeeld de FAQ voor ChatGPT waarin staat dat het datamodel is gebaseerd op artikelen en berichten die ouder zijn dan september 2021. Dit is problematisch voor Mac-specifieke oplossingen omdat we allemaal weten dat macOS , zoals elke technologie, binnen twee jaar veel kan veranderen en evolueren (en dat vaak ook doet). Dit geldt met name voor beheertaken.

De FAQ waarschuwt ook dat de door ChatGPT verstrekte informatie 'mogelijk niet op feiten berust'. Het taalmodel is gebaseerd op statistische modellen van woorden. Het heeft geen idee van de werkelijke betekenis van die woorden en nog minder van wat feitelijk is of niet. Het hoeft niet te verbazen dat een statistiek die is gegenereerd door AI, gebaseerd op miljoenen online berichten, niet in staat is toe te geven dat het het antwoord niet weet, en in plaats daarvan onzin zal verkondigen.

Tijdens mijn korte ervaring met ChatGPT zijn de eerste antwoorden meestal vrij solide, hoewel ze vaak enkele kleine gebreken vertonen. Maar als je in details gaat treden, bereik je al snel het punt waarop de bot dingen gaat verzinnen, een proces dat OpenAI 'hallucinatie' heeft genoemd. Wanneer je een chatbot om hulp vraagt over iets waar je geen achtergrond in hebt, kun je misschien niet zien wanneer hij zijn antwoorden van waarheidsgetrouwe verklaringen naar niet-feitelijk terrein verplaatst.

In het algemeen kan het het beste zijn om informatie van een chatbot op dezelfde manier te behandelen als de resultaten van een zoekopdracht op internet. Vertrouw niet in eerste instantie alles wat je van internet krijgt, maar evalueer de reacties en hun context. Op een webpagina kun je de bron controleren. Vraag jezelf bijvoorbeeld af of de informatie afkomstig is van een bekende MacAdmin? Of misschien een ontwikkelaar die transparant is over het uitvoeren van zijn scripts in verschillende omgevingen? Ook de leeftijd van een post is vaak een verklikker. Bedenk of het script is gemaakt voor een niet-ondersteund besturingssysteem, zoals Snow Leopard. zo ja, dan is de kans klein dat het nog werkt zoals geschreven. Soms levert wat dieper graven betere of meer actuele informatie op uit de commentaren en antwoorden die gebruikers onlangs hebben achtergelaten. Elk van deze acties stelt gebruikers in staat de geldigheid van de informatie beter te beoordelen.

Helaas toont ChatGPT vooralsnog niet de bronnen van zijn kennis, maar het ziet ernaar uit dat de nieuwe AI-gestuurde zoekopdrachten van Bing en Google dit probleem aanpakken door links naar bronnen op te nemen, wat op dit vlak een enorme verbetering zal zijn.

Toch kan een gesprek met een AI-bot nuttig zijn om aanknopingspunten te bieden voor verder onderzoek en experimenten. Maar het zou verstandig zijn om sceptisch en voorzichtig te blijven. Gesprekken met echte mensen, in persoon en op onlineforums en via messaging apps bieden nog steeds betere kwaliteit informatie en advies. Praten met mensen kan je ook uitdagen om 'een stap terug te doen en uit te leggen wat je wilt bereiken', wat vaak een belangrijke stap is om daadwerkelijk de oplossing te vinden die je zoekt.

Bestemming onbekend

Ondanks al mijn bedenkingen geef ik toe dat deze nieuwe generatie chatbots een aanzienlijke verbetering is ten opzichte van wat er eerder is geweest. Ik moet denken aan het eerste gebruik van Google eind jaren negentig. De zoekresultaten van Google waren een enorme sprong voorwaarts ten opzichte van de resultaten van zijn voorgangers. Ik herinner me ook de bezorgdheid dat Google Search het onderwijs en het werk volledig zou ontwrichten, waardoor verschillende categorieën menselijke beroepen volledig overbodig zouden worden. Achteraf gezien had het verbeterde zoeken op internet dat Google introduceerde weliswaar een grote invloed op hoe wij leren en werken, maar de perceptie dat ons leven eromheen zou gaan draaien bleek ook niet het geval.

Een soortgelijke opwinding was recenter verbonden aan de opkomst van spraakassistenten, zoals Siri. Maar uiteindelijk, na meer dan tien jaar gebruik, zijn ze ook meestal ondermaats gebleven, afgezien van een paar specifieke gebruiksgevallen.

ChatGPT zou het begin kunnen zijn van een van die exponentiële groeicurves die we soms in de technologie zien, waarbij de komende jaren mogelijk nog dramatischer veranderingen zullen brengen. Waarschijnlijker is echter dat de verbeteringen van de afgelopen jaren, de algoritmen, de hardware en de gegevens allemaal samen een indrukwekkende stap voorwaarts hebben gemaakt. Waarschijnlijk duurt het nog een decennium of twee voordat we verdere doorbraken kunnen verwachten.

Photo of Armin Briegel
Armin Briegel
Jamf
Armin Briegel, Senior Consulting Engineer
Schrijf je in voor het Jamf blog

Krijg markttrends, Apple updates en Jamf nieuws direct in je inbox.

Raadpleeg ons Privacybeleid voor meer informatie over de manier waarop we uw gegevens verzamelen, gebruiken, bekendmaken, verplaatsen en bewaren.