Keine Installation mit Eingabeaufforderung und Kennworteingabe für Homebrew

Ich versuche, ein Skript zum Bereitstellen von macOS zu erstellen, und das letzte Stück, das nicht automatisiert ist, ist die Installation von Homebrew. Aufgrund des einzigartigen Szenarios, in dem Homebrew nicht mit installiert werden sollte sudound sowohl die returnTaste als auch die Benutzer gedrückt werden müssen password, ist es schwierig geworden, dies herauszufinden. Ich habe ein paar Stunden damit verbracht und andere unbeantwortete Fragen zu StackExchange gefunden, ohne Glück, es vollständig zu automatisieren.

Mein Code:

echo "Password: "
read -s PASSWORD
echo $PASSWORD | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Das Echo überspringt die Trefferanforderung, returngibt aber das Passwort nicht weiter, da mir das -SFlag fehlt, weil ich sudo bei der Installation von Homebrew nicht einbeziehen sollte. Ich brauche letztendlich ein Setup, das den Befehl trifft UND das Passwort übergibt, ohne sudo zu verwenden. Der Rest meines Skripts wird mit using ausgeführt, echo $PASSWORD | sudo -S my-command-here...daher möchte ich nach Möglichkeit nicht zu weit von diesem Schema abweichen.

Ein paar mehr Details könnten helfen. Was genau ist das Problem, das Sie hier zu lösen versuchen (Ihre Frage zeigt hauptsächlich Ihre Lösungsversuche, aber nicht wirklich, was das Problem überhaupt ist). Wird dieses Skript als Administrator ausgeführt? Können Sie es so ändern, dass das gesamte Skript als Administrator ausgeführt wird? Können Sie erstellen und chmod, /usr/localbevor Sie Homebrew installieren?
Ich habe gestern Abend eine Bearbeitung hinzugefügt, die hoffentlich einige zusätzliche Details enthält. Es sieht nicht so aus, als wäre es noch genehmigt worden. Der Befehl wird beendet, wenn Sie versuchen, ihn als sudo auszuführen. Ich nehme an, wir könnten den Ordner erstellen und ändern - nur wenn es unmöglich ist, dass das Skript die Eingabetaste drückt und das Passwort in einem einzigen Befehl durchgibt. Bleiben Sie auf dem Laufenden, damit diese Änderung getroffen wird, und es sollte helfen, Informationen hinzuzufügen.
Sie haben es anstelle der Frage zur Antwort hinzugefügt. Bitte bearbeiten Sie stattdessen die Frage.
Wenn Sie für einen Moment ignorieren, dass die Verwendung echo PASSWORD | sudo -Seine schlechte Praxis ist (zumindest aus Sicherheitsgründen), scheint Ihr Problem darauf zurückzuführen zu sein, dass innerhalb des Homebrew-Installationsskripts sudoohne aufgerufen wird . -SDaher möchten Sie vielleicht nach Möglichkeiten fragen, um zu verhindern, dass Homebrew überhaupt versucht, sudo zu verwenden (weiß nicht, ob dies möglich ist) oder nach Möglichkeiten, Ihr Skript zu ändern, um dies zu umgehen.

Antworten (1)

Die -sOption funktioniert bei mir, daher weiß ich nicht, warum sie bei dir nicht funktioniert.

#!/bin/shHaben Sie versucht, (oder #!/bin/bash) oben in Ihrem Skript hinzuzufügen ?

-nWenn Sie die Option on verwenden, echoerhalten Sie die Eingabe in derselben Zeile wie das Label.

Das Folgende hat also die Eingabe: Password: <waiting for input>, und in der nächsten Zeile wird einfach das eingegebene Passwort gedruckt - das awkdient nur zum Testen, ob die Pipe funktioniert hat. Und dann habe ich eine Schleife hinzugefügt, damit immer etwas eingegeben werden muss.

#!/bin/sh

readPassword
echo $PASSWORD | awk '{print $1}'

readPassword() {
   echo -n "Password: "
   read -s PASSWORD
   echo ""
   if [[ -z "$PASSWORD" ]]; then
      printf '%s\n' "A password is required..."
      readPassword
   fi
}
Ja, dies ist ein kleiner Teil meines Skripts (der einzige Teil, der ohne Interaktion des Benutzers nicht funktioniert) und ich habe das #!/bin/bashoben in das eigentliche Skript eingefügt. Die -nFlagge ist eine schöne Ergänzung, danke! Dies behebt jedoch nicht wirklich das Homebrew-Installationsproblem in meiner ursprünglichen Frage. Ich habe andere Befehle, um echo $PASSWORD | sudo -S systemsetup -setremotelogin onmit dem -SFlag zu arbeiten, aber ich muss sudo einschließen, damit sie funktionieren. Homebrew sollte nicht über sudo installiert werden, daher funktioniert dieses Setup nicht, es sei denn, mir fehlt etwas.
Vielleicht verstehe ich dein eigentliches Problem nicht. Sie benötigen kein Passwort für die Installation von Homebrew (Ihr Beispiel in der Frage). Warum möchten Sie also ein Passwort hinzufügen? Wenn ein Befehl keine Parameter verwendet, die ihm übergeben werden, müssen Sie nichts an den Befehl übergeben - wie hier mit einem Passwort, das der Befehl nicht verwendet.
Meine Frage ähnelt der hier gestellten Frage: stackoverflow.com/questions/24426424/… . Die Antworten auf diese Frage funktionieren jedoch nicht, da das Skript weiterhin nach dem Passwort fragt. Mein vollständiges Skript: github.com/Justintime50/mac-scripting/blob/master/deploy/nozani/… läuft, sodass ich das Passwort nur einmal ganz am Anfang eingeben muss, mit Ausnahme von Homebrew, wo ich das Skript beide Treffer haben returnmuss me und geben Sie das Passwort an der Eingabeaufforderung ein. Bei der Installation von Homebrew wird nach einem Passwort gefragt.