Wie kann ich den folgenden Unix-Befehl (Skript?) Auf Macs ausführen?

472
cj riveron

Ich bin in einer Situation, in der ich sehr spät informiert wurde, dass ein Programm, das wir zur Nachverfolgung von Lagerbeständen verwenden, am 31. Oktober EOL sein wird. Wir haben ungefähr 400 Mac-Computer, auf denen wir die alte Version deinstallieren müssen (nicht notwendig, aber richtig) und die neueste Version installieren. Ich schaue nach ARD (Apple Remote Desktop), muss aber zuerst das Skript zum Laufen bringen.

Aus Kostengründen ist Jampf keine Option. Ich bin kein Mac-Mensch und finde heraus, dass Batch-Dateien speziell eine Windows-Sache sind. Unten ist das Skript, das in den Foren vorgeschlagen wurde. Ich habe die Datei auf einer Netzwerkfreigabe gespeichert. Ich zeige den vorgeschlagenen Unix-Befehl und den, den ich mit offensichtlichen Substitutionen verwenden möchte.

  • Empfohlen: cd /Users/Shared/ ; curl -k -O https://server.hostingyourfiles.com/samanage.zip ; unzip samanage.zip ; /Users/Shared/samanage/Samanage_Agent_*.app/Contents/MacOS/installbuilder.sh --mode unattended ; rm -rf /Users/Shared/samanage/

  • Bergwerk: cd /Users/Shared/ ; curl -k -O smb://word.word/word/word Mac/Samanage_Agent_1.1.72_1.1.37_203_30_installer ; unzip samanage.zip ; /Users/Shared/samanage/Samanage_Agent_*.app/Contents/MacOS/installbuilder.sh --mode unattended ; rm -rf /Users/Shared/samanage/

Ich bekomme die folgenden Fehler, wenn ich den Unix-Befehl in das Terminal einfüge:

curl:(67) login denied curl: (6) Could not resolve host: Mac unzip: cannot find or open samanage.zip -bash /users/shared/samanage/smanage_agent app/contents/macos/installbuilder.sh: no such file or directory 

Muss es eine URL sein? Ist die Verwendung eines Skripts sogar die effizienteste Methode, die ARD verwendet? Kann ich die neue Installation ohne Skript einfach mit ARD pushen? Sollte ich all dies umgehen und das Installationsprogramm per E-Mail an die Benutzer senden? Bitte entschuldigen Sie meine Unkenntnis zu diesem Thema und vielen Dank im Voraus für Ihre Hilfe.

0

1 Antwort auf die Frage

1
Gordon Davisson

In Ihrer Version des Skripts gibt es zwei Hauptprobleme:

  • SMB erfordert im Allgemeinen eine Authentifizierung. Der erste Fehler "curl: (67) login denied" zeigt an, dass dies in Ihrem Fall fehlgeschlagen ist. Beachten Sie, dass auch wenn der Client bereits beim Server authentifiziert ist und der entsprechende Ordner eingehängt ist, curlversucht, eine eigene Verbindung zum Server herzustellen und die Datei über diesen Server herunterzuladen. Sie müssen die Datei entweder an einem für den Gast zugreifbaren Ort ablegen (ein HTTP-Server ist wahrscheinlich einfacher als SMB), oder Sie müssen einen anderen Weg finden, um sie an den Client zu senden.

    ARD ist hier eigentlich eine Option; Sie können die Option "Elemente kopieren" (im Menü "Verwalten" oder die Schaltfläche "Kopieren" in der Symbolleiste) verwenden, um die Datei von Ihrer Admin-Station auf die Clients zu kopieren. Anschließend können Sie das Installationsskript als separaten Schritt ausführen. ARD kann auch ganze Ordnerstrukturen kopieren, sodass Sie keine ZIP-Datei senden und diese dann auf jedem Client erweitern müssen. Senden Sie einfach den erweiterten Ordner.

    Übrigens, es gibt ein weiteres Problem mit diesem curlBefehl: Der Dateiname scheint ein Leerzeichen zu haben, das in Anführungszeichen oder Escape-Zeichen gesetzt werden muss, damit er als einzelne URL mit einem Leerzeichen und nicht als zwei separate URLs behandelt wird.

  • Die Datei hat den Namen "Samanage_Agent_1.1.72_1.1.37_203_30_installer", aber Sie haben den Befehl, eine Datei mit dem Namen "samanage.zip" zu entpacken. Ändern Sie entweder den Namen der Datei, die Sie herunterladen / senden, in "samanage.zip" oder bearbeiten Sie den unzipBefehl so, dass er dem tatsächlichen Namen entspricht.

  • Ein weiteres Problem (das auch im Originalskript enthalten ist) besteht darin, dass es alle Schritte blind durchläuft, selbst wenn einer teilweise ausfällt. In diesem Fall ist der curlBefehl beispielsweise fehlgeschlagen. Selbst wenn der Dateiname richtig war, würde dies nichts bedeuten. Wenn Sie unzipalso versuchen, die erweiterte Datei auszuführen, hätte es möglicherweise nicht funktioniert.

    Wenn Sie nicht über ein komplexeres Skript verfügen, das nach Fehlern wiederhergestellt werden kann, empfiehlt es sich, das Skript zu beenden, anstatt zu versuchen, fortzufahren. Sie können dies tun, indem Sie den Befehl set -eam Anfang des Skripts hinzufügen oder die Befehle mit &&anstelle von verknüpfen ;. Mit dieser &&Option können Sie auch einen Fehlerbehandler hinzufügen mit ||:

    cd /Users/Shared && curl -k -O https://server.hostingyourfiles.com/samanage.zip && unzip samanage.zip && /Users/Shared/samanage/Samanage_Agent_*.app/Contents/MacOS/installbuilder.sh --mode unattended && rm -rf /Users/Shared/samanage/ || echo "Installation failed on $HOSTNAME"